diff options
Diffstat (limited to 'fs/gfs2/dir.c')
| -rw-r--r-- | fs/gfs2/dir.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c index 6b48d7c268b..b9dd88a78dd 100644 --- a/fs/gfs2/dir.c +++ b/fs/gfs2/dir.c @@ -955,7 +955,12 @@ static int dir_split_leaf(struct inode *inode, const struct qstr *name)  	/* Change the pointers.  	   Don't bother distinguishing stuffed from non-stuffed.  	   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  */  	for (x = 0; x < half_len; x++)  		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  */ -	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--;) {  		error = gfs2_dir_read_data(dip, (char *)buf,  |