Loading fs/xattr.c +14 −24 Original line number Diff line number Diff line Loading @@ -324,7 +324,6 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, { int error; void *kvalue = NULL; void *vvalue = NULL; /* If non-NULL, we used vmalloc() */ char kname[XATTR_NAME_MAX + 1]; if (flags & ~(XATTR_CREATE|XATTR_REPLACE)) Loading @@ -341,10 +340,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, return -E2BIG; kvalue = kmalloc(size, GFP_KERNEL | __GFP_NOWARN); if (!kvalue) { vvalue = vmalloc(size); if (!vvalue) kvalue = vmalloc(size); if (!kvalue) return -ENOMEM; kvalue = vvalue; } if (copy_from_user(kvalue, value, size)) { error = -EFAULT; Loading @@ -357,10 +355,8 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, error = vfs_setxattr(d, kname, kvalue, size, flags); out: if (vvalue) vfree(vvalue); else kfree(kvalue); kvfree(kvalue); return error; } Loading Loading @@ -428,7 +424,6 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, { ssize_t error; void *kvalue = NULL; void *vvalue = NULL; char kname[XATTR_NAME_MAX + 1]; error = strncpy_from_user(kname, name, sizeof(kname)); Loading @@ -442,10 +437,9 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, size = XATTR_SIZE_MAX; kvalue = kzalloc(size, GFP_KERNEL | __GFP_NOWARN); if (!kvalue) { vvalue = vmalloc(size); if (!vvalue) kvalue = vmalloc(size); if (!kvalue) return -ENOMEM; kvalue = vvalue; } } Loading @@ -461,10 +455,9 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, than XATTR_SIZE_MAX bytes. Not possible. */ error = -E2BIG; } if (vvalue) vfree(vvalue); else kfree(kvalue); kvfree(kvalue); return error; } Loading Loading @@ -521,17 +514,15 @@ listxattr(struct dentry *d, char __user *list, size_t size) { ssize_t error; char *klist = NULL; char *vlist = NULL; /* If non-NULL, we used vmalloc() */ if (size) { if (size > XATTR_LIST_MAX) size = XATTR_LIST_MAX; klist = kmalloc(size, __GFP_NOWARN | GFP_KERNEL); if (!klist) { vlist = vmalloc(size); if (!vlist) klist = vmalloc(size); if (!klist) return -ENOMEM; klist = vlist; } } Loading @@ -544,10 +535,9 @@ listxattr(struct dentry *d, char __user *list, size_t size) than XATTR_LIST_MAX bytes. Not possible. */ error = -E2BIG; } if (vlist) vfree(vlist); else kfree(klist); kvfree(klist); return error; } Loading Loading
fs/xattr.c +14 −24 Original line number Diff line number Diff line Loading @@ -324,7 +324,6 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, { int error; void *kvalue = NULL; void *vvalue = NULL; /* If non-NULL, we used vmalloc() */ char kname[XATTR_NAME_MAX + 1]; if (flags & ~(XATTR_CREATE|XATTR_REPLACE)) Loading @@ -341,10 +340,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, return -E2BIG; kvalue = kmalloc(size, GFP_KERNEL | __GFP_NOWARN); if (!kvalue) { vvalue = vmalloc(size); if (!vvalue) kvalue = vmalloc(size); if (!kvalue) return -ENOMEM; kvalue = vvalue; } if (copy_from_user(kvalue, value, size)) { error = -EFAULT; Loading @@ -357,10 +355,8 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value, error = vfs_setxattr(d, kname, kvalue, size, flags); out: if (vvalue) vfree(vvalue); else kfree(kvalue); kvfree(kvalue); return error; } Loading Loading @@ -428,7 +424,6 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, { ssize_t error; void *kvalue = NULL; void *vvalue = NULL; char kname[XATTR_NAME_MAX + 1]; error = strncpy_from_user(kname, name, sizeof(kname)); Loading @@ -442,10 +437,9 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, size = XATTR_SIZE_MAX; kvalue = kzalloc(size, GFP_KERNEL | __GFP_NOWARN); if (!kvalue) { vvalue = vmalloc(size); if (!vvalue) kvalue = vmalloc(size); if (!kvalue) return -ENOMEM; kvalue = vvalue; } } Loading @@ -461,10 +455,9 @@ getxattr(struct dentry *d, const char __user *name, void __user *value, than XATTR_SIZE_MAX bytes. Not possible. */ error = -E2BIG; } if (vvalue) vfree(vvalue); else kfree(kvalue); kvfree(kvalue); return error; } Loading Loading @@ -521,17 +514,15 @@ listxattr(struct dentry *d, char __user *list, size_t size) { ssize_t error; char *klist = NULL; char *vlist = NULL; /* If non-NULL, we used vmalloc() */ if (size) { if (size > XATTR_LIST_MAX) size = XATTR_LIST_MAX; klist = kmalloc(size, __GFP_NOWARN | GFP_KERNEL); if (!klist) { vlist = vmalloc(size); if (!vlist) klist = vmalloc(size); if (!klist) return -ENOMEM; klist = vlist; } } Loading @@ -544,10 +535,9 @@ listxattr(struct dentry *d, char __user *list, size_t size) than XATTR_LIST_MAX bytes. Not possible. */ error = -E2BIG; } if (vlist) vfree(vlist); else kfree(klist); kvfree(klist); return error; } Loading