aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2011-03-22 18:40:10 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-03-28 07:31:23 -0700
commit0db49efd46f6ad1db8ff26ccc4e4e2b6085180e1 (patch)
treeec768d89424ba98b36ce67a2ba454ecf115cf84d
parentb9806bf136fb416a48aaff18dc271de0e75bbcf0 (diff)
downloadlinux-linaro-stable-0db49efd46f6ad1db8ff26ccc4e4e2b6085180e1.tar.gz
SUNRPC: Never reuse the socket port after an xs_close()
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>
-rw-r--r--net/sunrpc/xprtsock.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 2334279..60d1653 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -729,6 +729,8 @@ static void xs_reset_transport(struct sock_xprt *transport)
if (sk == NULL)
return;
+ transport->srcport = 0;
+
write_lock_bh(&sk->sk_callback_lock);
transport->inet = NULL;
transport->sock = NULL;