Signed-off-by: "Eric W. Biederman" <ebied...@xmission.com>
---
 fs/devpts/inode.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 80c78bb472a9..46d633ab16c7 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -462,6 +462,7 @@ static int
 devpts_fill_super(struct super_block *s, void *data, int silent)
 {
        struct inode *inode;
+       int error;
 
        s->s_blocksize = 1024;
        s->s_blocksize_bits = 10;
@@ -469,10 +470,16 @@ devpts_fill_super(struct super_block *s, void *data, int 
silent)
        s->s_op = &devpts_sops;
        s->s_time_gran = 1;
 
+       error = -ENOMEM;
        s->s_fs_info = new_pts_fs_info();
        if (!s->s_fs_info)
                goto fail;
 
+       error = parse_mount_options(data, &DEVPTS_SB(s)->mount_opts);
+       if (error)
+               goto fail;
+
+       error = -ENOMEM;
        inode = new_inode(s);
        if (!inode)
                goto fail;
@@ -490,7 +497,7 @@ devpts_fill_super(struct super_block *s, void *data, int 
silent)
        pr_err("get root dentry failed\n");
 
 fail:
-       return -ENOMEM;
+       return error;
 }
 
 #ifdef CONFIG_DEVPTS_MULTIPLE_INSTANCES
@@ -557,10 +564,6 @@ static struct dentry *devpts_mount(struct file_system_type 
*fs_type,
                if (error)
                        goto out_undo_sget;
 
-               error = parse_mount_options(data, &DEVPTS_SB(s)->mount_opts);
-               if (error)
-                       goto out_undo_sget;
-
                error = mknod_ptmx(s);
                if (error)
                        goto out_undo_sget;
-- 
2.6.3

Reply via email to