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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to