[2/7] btrfs/acl: fix btrfs_xattr_acl_set()
diff mbox

Message ID 4C513B64.6020805@cn.fujitsu.com
State New, archived
Headers show

Commit Message

Miao Xie July 29, 2010, 8:27 a.m. UTC
None

Patch
diff mbox

diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 2f4f65a..bb35580 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -169,16 +169,17 @@  static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
 
 	if (value) {
 		acl = posix_acl_from_xattr(value, size);
-		if (acl == NULL) {
-			value = NULL;
-			size = 0;
-		} else if (IS_ERR(acl)) {
+		if (acl) {
+			ret = posix_acl_valid(acl);
+			if (ret)
+				goto out;
+		} else if (IS_ERR(acl))
 			return PTR_ERR(acl);
-		}
 	}
 
 	ret = btrfs_set_acl(NULL, dentry->d_inode, acl, type);
 
+out:
 	posix_acl_release(acl);
 
 	return ret;