mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-08 18:43:21 +01:00
kernfs: kvmalloc xattr value instead of kmalloc
xattr values have a 64k maximum size. This can result in an order 4 kmalloc request which can be difficult to fulfill. Since xattrs do not need physically contiguous memory, we can switch to kvmalloc and not have to worry about higher order allocations failing. Signed-off-by: Daniel Xu <[email protected]> Acked-by: Chris Down <[email protected]> Reviewed-by: Andreas Dilger <[email protected]> Reviewed-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Tejun Heo <[email protected]>
This commit is contained in:
1 parent
e7b20d9796
commit
fdc85222d5
1 file changed
+3
-3
+3
-3
@@ -817,7 +817,7 @@ struct simple_xattr *simple_xattr_alloc(const void *value, size_t size)
|
||||
if (len < sizeof(*new_xattr))
|
||||
return NULL;
|
||||
|
||||
new_xattr = kmalloc(len, GFP_KERNEL);
|
||||
new_xattr = kvmalloc(len, GFP_KERNEL);
|
||||
if (!new_xattr)
|
||||
return NULL;
|
||||
|
||||
@@ -882,7 +882,7 @@ int simple_xattr_set(struct simple_xattrs *xattrs, const char *name,
|
||||
|
||||
new_xattr->name = kstrdup(name, GFP_KERNEL);
|
||||
if (!new_xattr->name) {
|
||||
kfree(new_xattr);
|
||||
kvfree(new_xattr);
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
@@ -912,7 +912,7 @@ out:
|
||||
spin_unlock(&xattrs->lock);
|
||||
if (xattr) {
|
||||
kfree(xattr->name);
|
||||
kfree(xattr);
|
||||
kvfree(xattr);
|
||||
}
|
||||
return err;
|
||||
|
||||
|
||||
Reference in new issue
Block a user