xattr: use memdup_user()

Remove open-coded memdup_user()

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Li Zefan 2009-04-08 15:06:12 +08:00 committed by Al Viro
parent 3eac8778a2
commit 3939fcde24
1 changed files with 3 additions and 7 deletions

View File

@ -237,13 +237,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
if (size) { if (size) {
if (size > XATTR_SIZE_MAX) if (size > XATTR_SIZE_MAX)
return -E2BIG; return -E2BIG;
kvalue = kmalloc(size, GFP_KERNEL); kvalue = memdup_user(value, size);
if (!kvalue) if (IS_ERR(kvalue))
return -ENOMEM; return PTR_ERR(kvalue);
if (copy_from_user(kvalue, value, size)) {
kfree(kvalue);
return -EFAULT;
}
} }
error = vfs_setxattr(d, kname, kvalue, size, flags); error = vfs_setxattr(d, kname, kvalue, size, flags);