Simplify devpts_get_sb() failure exits
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 21 Mar 2010 01:57:43 +0000 (21:57 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 21 May 2010 22:31:12 +0000 (18:31 -0400)
postpone simple_set_mnt() until we know we won't fail.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/devpts/inode.c

index 0120247b41c0d6661e112fa4e0c34f7eade0a887..8b3ffd5b5235eebf6e5f711efa1673776f80e6e9 100644 (file)
@@ -384,18 +384,15 @@ static int devpts_get_sb(struct file_system_type *fs_type,
                s->s_flags |= MS_ACTIVE;
        }
 
-       simple_set_mnt(mnt, s);
-
        memcpy(&(DEVPTS_SB(s))->mount_opts, &opts, sizeof(opts));
 
        error = mknod_ptmx(s);
        if (error)
-               goto out_dput;
+               goto out_undo_sget;
 
-       return 0;
+       simple_set_mnt(mnt, s);
 
-out_dput:
-       dput(s->s_root); /* undo dget() in simple_set_mnt() */
+       return 0;
 
 out_undo_sget:
        deactivate_locked_super(s);