summaryrefslogtreecommitdiff
path: root/fs/btrfs/acl.c
diff options
context:
space:
mode:
authorDaniel J Blueman <daniel.blueman@gmail.com>2011-05-03 16:44:13 +0000
committerChris Mason <chris.mason@oracle.com>2011-05-14 16:10:18 -0400
commitf5de93914983bf04b92a786d1d205286fc53b49b (patch)
tree88801bc318e62bdd34698ca7cf5029b16570d1b7 /fs/btrfs/acl.c
parent7cf96da3ec7ca225acf4f284b0e904a1f5f98821 (diff)
downloadlinux-3.10-f5de93914983bf04b92a786d1d205286fc53b49b.tar.gz
linux-3.10-f5de93914983bf04b92a786d1d205286fc53b49b.tar.bz2
linux-3.10-f5de93914983bf04b92a786d1d205286fc53b49b.zip
Prevent oopsing in posix_acl_valid()
If posix_acl_from_xattr() returns an error code, a negative address is dereferenced causing an oops; fix by checking for error code first. Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com> Reviewed-by: Josef Bacik <josef@redhat.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/acl.c')
-rw-r--r--fs/btrfs/acl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index a892bc27f13..827be9a6ca3 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -178,12 +178,13 @@ static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
if (value) {
acl = posix_acl_from_xattr(value, size);
+ if (IS_ERR(acl))
+ return PTR_ERR(acl);
+
if (acl) {
ret = posix_acl_valid(acl);
if (ret)
goto out;
- } else if (IS_ERR(acl)) {
- return PTR_ERR(acl);
}
}