aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2016-09-14 14:53:33 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-09-23 05:31:31 -0400
commitdee87d47365e47078e3ba72a64d50ff25927e498 (patch)
tree8b9e0a2baec2cb581deb71c945db6c34bc7b13ce
parenta3081893cab48df3facff8144d9506610213241a (diff)
devpts: Move parse_mount_options into fill_super
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/devpts/inode.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 79a5941c2474..c59d39f2d512 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -395,6 +395,7 @@ static int
395devpts_fill_super(struct super_block *s, void *data, int silent) 395devpts_fill_super(struct super_block *s, void *data, int silent)
396{ 396{
397 struct inode *inode; 397 struct inode *inode;
398 int error;
398 399
399 s->s_iflags &= ~SB_I_NODEV; 400 s->s_iflags &= ~SB_I_NODEV;
400 s->s_blocksize = 1024; 401 s->s_blocksize = 1024;
@@ -403,10 +404,16 @@ devpts_fill_super(struct super_block *s, void *data, int silent)
403 s->s_op = &devpts_sops; 404 s->s_op = &devpts_sops;
404 s->s_time_gran = 1; 405 s->s_time_gran = 1;
405 406
407 error = -ENOMEM;
406 s->s_fs_info = new_pts_fs_info(s); 408 s->s_fs_info = new_pts_fs_info(s);
407 if (!s->s_fs_info) 409 if (!s->s_fs_info)
408 goto fail; 410 goto fail;
409 411
412 error = parse_mount_options(data, PARSE_MOUNT, &DEVPTS_SB(s)->mount_opts);
413 if (error)
414 goto fail;
415
416 error = -ENOMEM;
410 inode = new_inode(s); 417 inode = new_inode(s);
411 if (!inode) 418 if (!inode)
412 goto fail; 419 goto fail;
@@ -424,7 +431,7 @@ devpts_fill_super(struct super_block *s, void *data, int silent)
424 pr_err("get root dentry failed\n"); 431 pr_err("get root dentry failed\n");
425 432
426fail: 433fail:
427 return -ENOMEM; 434 return error;
428} 435}
429 436
430/* 437/*
@@ -437,13 +444,8 @@ static struct dentry *devpts_mount(struct file_system_type *fs_type,
437 int flags, const char *dev_name, void *data) 444 int flags, const char *dev_name, void *data)
438{ 445{
439 int error; 446 int error;
440 struct pts_mount_opts opts;
441 struct super_block *s; 447 struct super_block *s;
442 448
443 error = parse_mount_options(data, PARSE_MOUNT, &opts);
444 if (error)
445 return ERR_PTR(error);
446
447 s = sget(fs_type, NULL, set_anon_super, flags, NULL); 449 s = sget(fs_type, NULL, set_anon_super, flags, NULL);
448 if (IS_ERR(s)) 450 if (IS_ERR(s))
449 return ERR_CAST(s); 451 return ERR_CAST(s);
@@ -455,8 +457,6 @@ static struct dentry *devpts_mount(struct file_system_type *fs_type,
455 s->s_flags |= MS_ACTIVE; 457 s->s_flags |= MS_ACTIVE;
456 } 458 }
457 459
458 memcpy(&(DEVPTS_SB(s))->mount_opts, &opts, sizeof(opts));
459
460 error = mknod_ptmx(s); 460 error = mknod_ptmx(s);
461 if (error) 461 if (error)
462 goto out_undo_sget; 462 goto out_undo_sget;