diff mbox

Btrfs: remove OPT_acl parse when acl disabled

Message ID 1399524992-10810-1-git-send-email-lucienchao@gmail.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Guangliang Zhao May 8, 2014, 4:56 a.m. UTC
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(+)

Comments

David Sterba May 9, 2014, 1:21 p.m. UTC | #1
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
Guangliang Zhao May 12, 2014, 2:42 a.m. UTC | #2
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 mbox

Patch

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;