diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/devpts/inode.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c index 21165cf934ff..c68edb969441 100644 --- a/fs/devpts/inode.c +++ b/fs/devpts/inode.c | |||
@@ -90,6 +90,15 @@ static inline struct super_block *pts_sb_from_inode(struct inode *inode) | |||
90 | #define PARSE_MOUNT 0 | 90 | #define PARSE_MOUNT 0 |
91 | #define PARSE_REMOUNT 1 | 91 | #define PARSE_REMOUNT 1 |
92 | 92 | ||
93 | /* | ||
94 | * parse_mount_options(): | ||
95 | * Set @opts to mount options specified in @data. If an option is not | ||
96 | * specified in @data, set it to its default value. The exception is | ||
97 | * 'newinstance' option which can only be set/cleared on a mount (i.e. | ||
98 | * cannot be changed during remount). | ||
99 | * | ||
100 | * Note: @data may be NULL (in which case all options are set to default). | ||
101 | */ | ||
93 | static int parse_mount_options(char *data, int op, struct pts_mount_opts *opts) | 102 | static int parse_mount_options(char *data, int op, struct pts_mount_opts *opts) |
94 | { | 103 | { |
95 | char *p; | 104 | char *p; |
@@ -355,12 +364,9 @@ static int devpts_get_sb(struct file_system_type *fs_type, | |||
355 | struct pts_mount_opts opts; | 364 | struct pts_mount_opts opts; |
356 | struct super_block *s; | 365 | struct super_block *s; |
357 | 366 | ||
358 | memset(&opts, 0, sizeof(opts)); | 367 | error = parse_mount_options(data, PARSE_MOUNT, &opts); |
359 | if (data) { | 368 | if (error) |
360 | error = parse_mount_options(data, PARSE_MOUNT, &opts); | 369 | return error; |
361 | if (error) | ||
362 | return error; | ||
363 | } | ||
364 | 370 | ||
365 | if (opts.newinstance) | 371 | if (opts.newinstance) |
366 | s = sget(fs_type, NULL, set_anon_super, NULL); | 372 | s = sget(fs_type, NULL, set_anon_super, NULL); |