Skip to content

Commit

Permalink
cifs: propagate errors from cifs_get_root() to mount(2)
Browse files Browse the repository at this point in the history
... instead of just failing with -EINVAL

Acked-by: Pavel Shilovsky <piastryyy@gmail.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Jun 24, 2011
1 parent 5c4f1ad commit 9403c9c
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
full_path = cifs_build_path_to_root(vol, cifs_sb,
cifs_sb_master_tcon(cifs_sb));
if (full_path == NULL)
return NULL;
return ERR_PTR(-ENOMEM);

cFYI(1, "Get root dentry for %s", full_path);

Expand Down Expand Up @@ -583,7 +583,7 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
dchild = d_alloc(dparent, &name);
if (dchild == NULL) {
dput(dparent);
dparent = NULL;
dparent = ERR_PTR(-ENOMEM);
goto out;
}
}
Expand All @@ -601,15 +601,15 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
if (rc) {
dput(dchild);
dput(dparent);
dparent = NULL;
dparent = ERR_PTR(rc);
goto out;
}
alias = d_materialise_unique(dchild, inode);
if (alias != NULL) {
dput(dchild);
if (IS_ERR(alias)) {
dput(dparent);
dparent = NULL;
dparent = ERR_PTR(-EINVAL); /* XXX */
goto out;
}
dchild = alias;
Expand Down Expand Up @@ -704,10 +704,8 @@ cifs_do_mount(struct file_system_type *fs_type,
}

root = cifs_get_root(volume_info, sb);
if (root == NULL) {
root = ERR_PTR(-EINVAL); /* XXX */
if (IS_ERR(root))
goto out_super;
}

cFYI(1, "dentry root is: %p", root);
goto out;
Expand Down

0 comments on commit 9403c9c

Please sign in to comment.