[PATCH] devpts: fix to set default values of mount options

From: Wei Yongjun
Date: Fri May 15 2009 - 01:23:50 EST


If devpts is mounted with no option specified, the default
values of mount options will no be set. This happend in my
Fedora11Beta box when CONFIG_DEVPTS_MULTIPLE_INSTANCES is
configured in .config.

$ mkdir /dev/pts2

$ mount -t devpts devpts /dev/pts2
$ cat /proc/mounts
devpts /dev/pts2 devpts rw,relatime,mode=000,ptmxmode=000 0 0

# umount /dev/pts2
$ mount -t devpts -o gid=0 devpts /dev/pts2
$ cat /proc/mounts
devpts /dev/pts2 devpts rw,relatime,gid=0,mode=600,ptmxmode=000 0 0

This patch fixed the problem.

Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx>
---
fs/devpts/inode.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 21165cf..738ffdc 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -105,6 +105,9 @@ static int parse_mount_options(char *data, int op, struct pts_mount_opts *opts)
if (op == PARSE_MOUNT)
opts->newinstance = 0;

+ if (!data)
+ return 0;
+
while ((p = strsep(&data, ",")) != NULL) {
substring_t args[MAX_OPT_ARGS];
int token;
@@ -356,11 +359,10 @@ static int devpts_get_sb(struct file_system_type *fs_type,
struct super_block *s;

memset(&opts, 0, sizeof(opts));
- if (data) {
- error = parse_mount_options(data, PARSE_MOUNT, &opts);
- if (error)
+
+ error = parse_mount_options(data, PARSE_MOUNT, &opts);
+ if (error)
return error;
- }

if (opts.newinstance)
s = sget(fs_type, NULL, set_anon_super, NULL);
--
1.5.3.8



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/