Message ID | 1399524992-10810-1-git-send-email-lucienchao@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Thu, May 08, 2014 at 12:56:32PM +0800, Guangliang Zhao wrote: > Even CONFIG_BTRFS_FS_POSIX_ACL is not defined, the acl still could > been enabled using a mount option, and now fs/btrfs/acl.o is not > built, so the mount options will appear to be supported but will > be silently ignored. > > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -579,9 +579,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) > goto out; > } > break; > +#ifdef CONFIG_BTRFS_FS_POSIX_ACL > case Opt_acl: > root->fs_info->sb->s_flags |= MS_POSIXACL; > break; > +#endif This will still silently accept the 'acl' mount option: token = match_token(p, tokens, args); token will be Opt_acl and in the switch(token), caught by the default: branch and will return 0. What' needed here is a #if/#else/#endif sequence where the #else block says that something like "acls requested but not compiled in". Similar to how the Opt_check_integrity* options are handled. > case Opt_noacl: > root->fs_info->sb->s_flags &= ~MS_POSIXACL; > break; -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, May 09, 2014 at 03:21:09PM +0200, David Sterba wrote: > On Thu, May 08, 2014 at 12:56:32PM +0800, Guangliang Zhao wrote: > > Even CONFIG_BTRFS_FS_POSIX_ACL is not defined, the acl still could > > been enabled using a mount option, and now fs/btrfs/acl.o is not > > built, so the mount options will appear to be supported but will > > be silently ignored. > > > > --- a/fs/btrfs/super.c > > +++ b/fs/btrfs/super.c > > @@ -579,9 +579,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) > > goto out; > > } > > break; > > +#ifdef CONFIG_BTRFS_FS_POSIX_ACL > > case Opt_acl: > > root->fs_info->sb->s_flags |= MS_POSIXACL; > > break; > > +#endif > > This will still silently accept the 'acl' mount option: > > token = match_token(p, tokens, args); > > token will be Opt_acl > > and in the switch(token), caught by the default: branch and will return 0. Didn't take care of it, good catch :-). I will send V2 ASAP. > > What' needed here is a #if/#else/#endif sequence where the #else block > says that something like "acls requested but not compiled in". > > Similar to how the Opt_check_integrity* options are handled. > > > case Opt_noacl: > > root->fs_info->sb->s_flags &= ~MS_POSIXACL; > > break;
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 363404b..68ae27c 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -579,9 +579,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) goto out; } break; +#ifdef CONFIG_BTRFS_FS_POSIX_ACL case Opt_acl: root->fs_info->sb->s_flags |= MS_POSIXACL; break; +#endif case Opt_noacl: root->fs_info->sb->s_flags &= ~MS_POSIXACL; break;
Even CONFIG_BTRFS_FS_POSIX_ACL is not defined, the acl still could been enabled using a mount option, and now fs/btrfs/acl.o is not built, so the mount options will appear to be supported but will be silently ignored. Signed-off-by: Guangliang Zhao <lucienchao@gmail.com> --- fs/btrfs/super.c | 2 ++ 1 file changed, 2 insertions(+)