diff options
author | Eric Van Hensbergen <ericvh@gmail.com> | 2005-09-09 13:04:28 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 13:57:58 -0700 |
commit | cb2e87a65d6cd735eb06fa595bf90497af28c37b (patch) | |
tree | ba4a261d67eb3c4830fe307ea2b97b51f0bc6fdf /fs/9p/trans_sock.c | |
parent | b501611a6f78558eafcf09b228abd866d4ea5d9f (diff) | |
download | op-kernel-dev-cb2e87a65d6cd735eb06fa595bf90497af28c37b.zip op-kernel-dev-cb2e87a65d6cd735eb06fa595bf90497af28c37b.tar.gz |
[PATCH] v9fs: fix handling of malformed 9P messages
This patch attempts to do a better job of cleaning up after detecting errors
on the transport. This should also improve error reporting on broken
connections to servers.
Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
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>
Diffstat (limited to 'fs/9p/trans_sock.c')
-rw-r--r-- | fs/9p/trans_sock.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/9p/trans_sock.c b/fs/9p/trans_sock.c index 081d1c8..01e26f0 100644 --- a/fs/9p/trans_sock.c +++ b/fs/9p/trans_sock.c @@ -254,7 +254,12 @@ v9fs_unix_init(struct v9fs_session_info *v9ses, const char *dev_name, static void v9fs_sock_close(struct v9fs_transport *trans) { - struct v9fs_trans_sock *ts = trans ? trans->priv : NULL; + struct v9fs_trans_sock *ts; + + if (!trans) + return; + + ts = trans->priv; if ((ts) && (ts->s)) { dprintk(DEBUG_TRANS, "closing the socket %p\n", ts->s); @@ -264,7 +269,10 @@ static void v9fs_sock_close(struct v9fs_transport *trans) dprintk(DEBUG_TRANS, "socket closed\n"); } - kfree(ts); + if (ts) + kfree(ts); + + trans->priv = NULL; } struct v9fs_transport v9fs_trans_tcp = { |