From fa18f1bdce898f0efd0c8639c901d826d01be04f Mon Sep 17 00:00:00 2001 From: Al Viro <viro@zeniv.linux.org.uk> Date: Fri, 17 Jun 2011 09:50:44 -0400 Subject: [PATCH] cifs: more breakage on mount failures if cifs_get_root() fails, we end up with ->mount() returning NULL, which is not what callers expect. Moreover, in case of superblock reuse we end up leaking a superblock reference... Acked-by: Pavel Shilovsky <piastryyy@gmail.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> --- fs/cifs/cifsfs.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index ba2b2da360d3..234e9d08db76 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -710,17 +710,14 @@ cifs_do_mount(struct file_system_type *fs_type, sb->s_flags |= MS_ACTIVE; - root = cifs_get_root(volume_info, sb); - if (root == NULL) - goto out_super; - - cFYI(1, "dentry root is: %p", root); - goto out; - out_shared: root = cifs_get_root(volume_info, sb); - if (root) - cFYI(1, "dentry root is: %p", root); + if (root == NULL) { + root = ERR_PTR(-EINVAL); /* XXX */ + goto out_super; + } + + cFYI(1, "dentry root is: %p", root); goto out; out_super: