Skip to content

Commit

Permalink
[PATCH] 9p: handle sget() failure
Browse files Browse the repository at this point in the history
Handle a failing sget() in v9fs_get_sb().

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Eric Van Hensbergen authored and Linus Torvalds committed Apr 11, 2006
1 parent e1a2509 commit 00fbc6d
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions fs/9p/vfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,13 @@ static struct super_block *v9fs_get_sb(struct file_system_type

if ((newfid = v9fs_session_init(v9ses, dev_name, data)) < 0) {
dprintk(DEBUG_ERROR, "problem initiating session\n");
kfree(v9ses);
return ERR_PTR(newfid);
sb = ERR_PTR(newfid);
goto out_free_session;
}

sb = sget(fs_type, NULL, v9fs_set_super, v9ses);

if (IS_ERR(sb))
goto out_close_session;
v9fs_fill_super(sb, v9ses, flags);

inode = v9fs_get_inode(sb, S_IFDIR | mode);
Expand Down Expand Up @@ -185,6 +186,12 @@ static struct super_block *v9fs_get_sb(struct file_system_type

return sb;

out_close_session:
v9fs_session_close(v9ses);
out_free_session:
kfree(v9ses);
return sb;

put_back_sb:
/* deactivate_super calls v9fs_kill_super which will frees the rest */
up_write(&sb->s_umount);
Expand Down

0 comments on commit 00fbc6d

Please sign in to comment.