|
@@ -955,7 +955,12 @@ static int dir_split_leaf(struct inode *inode, const struct qstr *name)
|
|
/* Change the pointers.
|
|
/* Change the pointers.
|
|
Don't bother distinguishing stuffed from non-stuffed.
|
|
Don't bother distinguishing stuffed from non-stuffed.
|
|
This code is complicated enough already. */
|
|
This code is complicated enough already. */
|
|
- lp = kmalloc(half_len * sizeof(__be64), GFP_NOFS | __GFP_NOFAIL);
|
|
|
|
|
|
+ lp = kmalloc(half_len * sizeof(__be64), GFP_NOFS);
|
|
|
|
+ if (!lp) {
|
|
|
|
+ error = -ENOMEM;
|
|
|
|
+ goto fail_brelse;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* Change the pointers */
|
|
/* Change the pointers */
|
|
for (x = 0; x < half_len; x++)
|
|
for (x = 0; x < half_len; x++)
|
|
lp[x] = cpu_to_be64(bn);
|
|
lp[x] = cpu_to_be64(bn);
|
|
@@ -1063,7 +1068,9 @@ static int dir_double_exhash(struct gfs2_inode *dip)
|
|
|
|
|
|
/* Allocate both the "from" and "to" buffers in one big chunk */
|
|
/* Allocate both the "from" and "to" buffers in one big chunk */
|
|
|
|
|
|
- buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS | __GFP_NOFAIL);
|
|
|
|
|
|
+ buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS);
|
|
|
|
+ if (!buf)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
|
|
for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) {
|
|
for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) {
|
|
error = gfs2_dir_read_data(dip, (char *)buf,
|
|
error = gfs2_dir_read_data(dip, (char *)buf,
|