[PATCH] 9p: handle sget() failure
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>
This commit is contained in:
Родитель
e1a2509023
Коммит
00fbc6dfe7
|
@ -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);
|
||||
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче