From: John L. Hammond Date: Tue, 26 Mar 2013 17:21:57 +0000 (-0500) Subject: LU-2753 llite: check alloc in ll_file_data_get, ll_dir_ioctl X-Git-Tag: 2.4.51~68 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=86dc491a90fd3fcbd329d8844b7398a40e59644e LU-2753 llite: check alloc in ll_file_data_get, ll_dir_ioctl In ll_file_data_get() and ll_dir_ioctl() return error on failed allocations. Signed-off-by: John L. Hammond Change-Id: I122db2cede770261d75af209e92aa60d86ea85f2 Reviewed-on: http://review.whamcloud.com/5845 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Dmitry Eremin Reviewed-by: Sebastien Buisson --- diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index a3086d0..febf6ea 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -1546,9 +1546,12 @@ out_rmdir: if (rc) RETURN(rc); - OBD_ALLOC_LARGE(lmm, lmmsize); - if (cfs_copy_from_user(lmm, lum, lmmsize)) - GOTO(free_lmm, rc = -EFAULT); + OBD_ALLOC_LARGE(lmm, lmmsize); + if (lmm == NULL) + RETURN(-ENOMEM); + + if (cfs_copy_from_user(lmm, lum, lmmsize)) + GOTO(free_lmm, rc = -EFAULT); switch (lmm->lmm_magic) { case LOV_USER_MAGIC_V1: diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 05df5d8..ce4259d 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -55,7 +55,11 @@ struct ll_file_data *ll_file_data_get(void) struct ll_file_data *fd; OBD_SLAB_ALLOC_PTR_GFP(fd, ll_file_data_slab, CFS_ALLOC_IO); + if (fd == NULL) + return NULL; + fd->fd_write_failed = false; + return fd; }