f2fs: correct return value of ->setxattr
authorChao Yu <chao2.yu@samsung.com>
Mon, 13 Jul 2015 09:45:19 +0000 (17:45 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 4 Aug 2015 21:09:59 +0000 (14:09 -0700)
This patch fixes to return correct error number of ->setxattr, which
is reported by xfstest tests/generic/026 as below:

generic/026      - output mismatch
    --- tests/generic/026.out
    +++ results/generic/026.out.bad
    @@ -4,6 +4,6 @@
     1 below acl max
     acl max
     1 above acl max
    -chacl: cannot set access acl on "largeaclfile": Argument list too long
    +chacl: cannot set access acl on "largeaclfile": Numerical result out of range
     use 16 aces
     use 17 aces
    ...
Ran: generic/026
Failures: generic/026
Failed 1 of 1 tests

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/xattr.c

index 07449b9..4de2286 100644 (file)
@@ -499,9 +499,12 @@ static int __f2fs_setxattr(struct inode *inode, int index,
 
        len = strlen(name);
 
-       if (len > F2FS_NAME_LEN || size > MAX_VALUE_LEN(inode))
+       if (len > F2FS_NAME_LEN)
                return -ERANGE;
 
+       if (size > MAX_VALUE_LEN(inode))
+               return -E2BIG;
+
        base_addr = read_all_xattrs(inode, ipage);
        if (!base_addr)
                goto exit;