fs/xattr.c: suppress page allocation failure warnings from sys_listxattr()
authorDave Jones <davej@redhat.com>
Thu, 5 Apr 2012 21:25:06 +0000 (14:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Apr 2012 22:25:50 +0000 (15:25 -0700)
This size is user controllable, up to a maximum of XATTR_LIST_MAX (64k).
So it's trivial for someone to trigger a stream of order:4 page
allocation errors.

Signed-off-by: Dave Jones <davej@redhat.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Dave Chinner <david@fromorbit.com>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/xattr.c

index d6dfd247bb2f4425fdfbd9c57b892a07c3922847..a14d842ccb217f86e675bc761d512e13219cba28 100644 (file)
@@ -496,7 +496,7 @@ listxattr(struct dentry *d, char __user *list, size_t size)
        if (size) {
                if (size > XATTR_LIST_MAX)
                        size = XATTR_LIST_MAX;
-               klist = kmalloc(size, GFP_KERNEL);
+               klist = kmalloc(size, __GFP_NOWARN | GFP_KERNEL);
                if (!klist)
                        return -ENOMEM;
        }