Simplify devpts_get_sb() failure exits
Al Viro [Sun, 21 Mar 2010 01:57:43 +0000 (21:57 -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 0120247..8b3ffd5 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);