[PATCH] v9fs: fix fd_close
If a 9pfs server crashes, v9fs_fd_close() is called. Subsequently, in cleaning up by performing a umount() on the FS that was provided by this server v9fs_fd_close() is called again, and uses the old, freed valus of trans->priv. This patch ensures that trans->priv can be freed only once, otherwise this function bails early. Signed-off-by: Michal Ostrowski <mostrows@watson.ibm.com> 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:
parent
7e7f358c8f
commit
f5ef3c105b
1 changed files with 2 additions and 2 deletions
|
@ -148,12 +148,12 @@ static void v9fs_fd_close(struct v9fs_transport *trans)
|
|||
if (!trans)
|
||||
return;
|
||||
|
||||
trans->status = Disconnected;
|
||||
ts = trans->priv;
|
||||
ts = xchg(&trans->priv, NULL);
|
||||
|
||||
if (!ts)
|
||||
return;
|
||||
|
||||
trans->status = Disconnected;
|
||||
if (ts->in_file)
|
||||
fput(ts->in_file);
|
||||
|
||||
|
|
Loading…
Reference in a new issue