This patch fixes the following Coccinelle warning: fs/xattr.c:563:8-15: WARNING opportunity for vmemdup_user Use vmemdup_user rather than duplicating its implementation This is a little bit restricted to reduce false positives Signed-off-by: Qing Wang <wangqing@xxxxxxxx> --- fs/xattr.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/fs/xattr.c b/fs/xattr.c index 5c8c517..288daea --- a/fs/xattr.c +++ b/fs/xattr.c @@ -560,20 +560,17 @@ setxattr(struct user_namespace *mnt_userns, struct dentry *d, if (size) { if (size > XATTR_SIZE_MAX) return -E2BIG; - kvalue = kvmalloc(size, GFP_KERNEL); - if (!kvalue) - return -ENOMEM; - if (copy_from_user(kvalue, value, size)) { - error = -EFAULT; - goto out; - } + + kvalue = vmemdup_user(value, size); + if (IS_ERR(kvalue)) + return ERR_PTR(PTR_ERR(kvalue)); + if ((strcmp(kname, XATTR_NAME_POSIX_ACL_ACCESS) == 0) || (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) posix_acl_fix_xattr_from_user(mnt_userns, kvalue, size); } error = vfs_setxattr(mnt_userns, d, kname, kvalue, size, flags); -out: kvfree(kvalue); return error; -- 2.7.4