aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/mount_zfs/mount_zfs.c
diff options
context:
space:
mode:
authorNed Bass <[email protected]>2013-05-13 19:48:24 -0700
committerBrian Behlendorf <[email protected]>2013-06-18 15:30:08 -0700
commitda29fe63f04aab286cfbfadefa12bb58389748c2 (patch)
treec50ec0648249d1a498574453195a4bb2c32528db /cmd/mount_zfs/mount_zfs.c
parentfb827006163574fddb7fa837109d228dacd2ebf6 (diff)
Don't leak mount flags into kernel
When calling mount(), care must be taken to avoid passing in flags that are used only by the user space utilities. Otherwise we may stomp on flags that are reserved for other purposes in the kernel. In particular, openSUSE 12.3 kernels have added a new MS_RICHACL super-block flag whose value conflicts with our MS_COMMENT flag. This causes incorrect behavior such as the umask being ignored. The MS_COMMENT flag essentially serves as a placeholder in the option_map data structure of zfs_mount.c, but its value is never used. Therefore we can avoid the conflict by defining it to 0. The MS_USERS, MS_OWNER, and MS_GROUP flags also conflict with reserved flags in the kernel. While this is not known to have caused any problems, it is nevertheless incorrect. For the purposes of the mount.zfs helper, the "users", "owner", and "group" options just serve as hints to set additional implied options. Therefore we now define their associated mount flags in terms of the options that they imply rather than giving them unique values. Signed-off-by: Brian Behlendorf <[email protected]> Closes #1457
Diffstat (limited to 'cmd/mount_zfs/mount_zfs.c')
-rw-r--r--cmd/mount_zfs/mount_zfs.c9
1 files changed, 0 insertions, 9 deletions
diff --git a/cmd/mount_zfs/mount_zfs.c b/cmd/mount_zfs/mount_zfs.c
index cd2731446..fd685faaa 100644
--- a/cmd/mount_zfs/mount_zfs.c
+++ b/cmd/mount_zfs/mount_zfs.c
@@ -131,15 +131,6 @@ parse_option(char *mntopt, unsigned long *mntflags,
if (strncmp(name, opt->name, strlen(name)) == 0) {
*mntflags |= opt->mntmask;
*zfsflags |= opt->zfsmask;
-
- /* MS_USERS implies default user options */
- if (opt->mntmask & (MS_USERS))
- *mntflags |= (MS_NOEXEC|MS_NOSUID|MS_NODEV);
-
- /* MS_OWNER|MS_GROUP imply default owner options */
- if (opt->mntmask & (MS_OWNER | MS_GROUP))
- *mntflags |= (MS_NOSUID|MS_NODEV);
-
error = 0;
goto out;
}