| From 246408dcd5dfeef2df437ccb0ef4d6ee87805f58 Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <Trond.Myklebust@netapp.com> |
| Date: Tue, 22 Mar 2011 18:40:10 -0400 |
| Subject: SUNRPC: Never reuse the socket port after an xs_close() |
| |
| From: Trond Myklebust <Trond.Myklebust@netapp.com> |
| |
| commit 246408dcd5dfeef2df437ccb0ef4d6ee87805f58 upstream. |
| |
| If we call xs_close(), we're in one of two situations: |
| - Autoclose, which means we don't expect to resend a request |
| - bind+connect failed, which probably means the port is in use |
| |
| Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| net/sunrpc/xprtsock.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/net/sunrpc/xprtsock.c |
| +++ b/net/sunrpc/xprtsock.c |
| @@ -729,6 +729,8 @@ static void xs_reset_transport(struct so |
| if (sk == NULL) |
| return; |
| |
| + transport->srcport = 0; |
| + |
| write_lock_bh(&sk->sk_callback_lock); |
| transport->inet = NULL; |
| transport->sock = NULL; |