43 lines
1.5 KiB
Diff
43 lines
1.5 KiB
Diff
|
From: Shi Weihua <shiwh@cn.fujitsu.com>
|
||
|
Date: Tue, 18 May 2010 00:51:54 +0000 (+0000)
|
||
|
Subject: Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
|
||
|
X-Git-Tag: v2.6.35-rc3~3^2~3
|
||
|
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=731e3d1b
|
||
|
|
||
|
Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
|
||
|
|
||
|
when used Posix File System Test Suite(pjd-fstest) to test btrfs,
|
||
|
some cases about setfacl failed when noacl mount option used.
|
||
|
I simplified used commands in pjd-fstest, and the following steps
|
||
|
can reproduce it.
|
||
|
------------------------
|
||
|
# cd btrfs-part/
|
||
|
# mkdir aaa
|
||
|
# setfacl -m m::rw aaa <- successed, but not expected by pjd-fstest.
|
||
|
------------------------
|
||
|
I checked ext3, a warning message occured, like as:
|
||
|
setfacl: aaa/: Operation not supported
|
||
|
Certainly, it's expected by pjd-fstest.
|
||
|
|
||
|
So, i compared acl.c of btrfs and ext3. Based on that, a patch created.
|
||
|
Fortunately, it works.
|
||
|
|
||
|
Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>
|
||
|
Signed-off-by: Chris Mason <chris.mason@oracle.com>
|
||
|
---
|
||
|
|
||
|
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
|
||
|
index 6b4d0cc..a372985 100644
|
||
|
--- a/fs/btrfs/acl.c
|
||
|
+++ b/fs/btrfs/acl.c
|
||
|
@@ -163,6 +163,9 @@ static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
|
||
|
if (!is_owner_or_cap(dentry->d_inode))
|
||
|
return -EPERM;
|
||
|
|
||
|
+ if (!IS_POSIXACL(dentry->d_inode))
|
||
|
+ return -EOPNOTSUPP;
|
||
|
+
|
||
|
if (value) {
|
||
|
acl = posix_acl_from_xattr(value, size);
|
||
|
if (acl == NULL) {
|