All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1442501401.12852.1.camel@primarydata.com>

diff --git a/a/1.txt b/N1/1.txt
index a774ce2..db38d84 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -51,3 +51,41 @@ Correct. The only exception is xs_destroy.
 How about the following.
 
 8<-----------------------------------------------------------------
+>From e2e68218e66c6b0715fd6b8f1b3092694a7c0e62 Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <trond.myklebust@primarydata.com>
+Date: Thu, 17 Sep 2015 10:42:27 -0400
+Subject: [PATCH] SUNRPC: Fix races between socket connection and destroy code
+
+When we're destroying the socket transport, we need to ensure that
+we cancel any existing delayed connection attempts, and order them
+w.r.t. the call to xs_close().
+
+Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
+---
+ net/sunrpc/xprtsock.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
+index 7be90bc1a7c2..d2dfbd043bea 100644
+--- a/net/sunrpc/xprtsock.c
++++ b/net/sunrpc/xprtsock.c
+@@ -881,8 +881,11 @@ static void xs_xprt_free(struct rpc_xprt *xprt)
+  */
+ static void xs_destroy(struct rpc_xprt *xprt)
+ {
++	struct sock_xprt *transport = container_of(xprt,
++			struct sock_xprt, xprt);
+ 	dprintk("RPC:       xs_destroy xprt %p\n", xprt);
+ 
++	cancel_delayed_work_sync(&transport->connect_worker);
+ 	xs_close(xprt);
+ 	xs_xprt_free(xprt);
+ 	module_put(THIS_MODULE);
+-- 
+2.4.3
+
+
+-- 
+Trond Myklebust
+Linux NFS client maintainer, PrimaryData
+trond.myklebust@primarydata.com
diff --git a/a/content_digest b/N1/content_digest
index 1732667..a51c39c 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -66,6 +66,44 @@
  "\n"
  "How about the following.\n"
  "\n"
- 8<-----------------------------------------------------------------
+ "8<-----------------------------------------------------------------\n"
+ ">From e2e68218e66c6b0715fd6b8f1b3092694a7c0e62 Mon Sep 17 00:00:00 2001\n"
+ "From: Trond Myklebust <trond.myklebust@primarydata.com>\n"
+ "Date: Thu, 17 Sep 2015 10:42:27 -0400\n"
+ "Subject: [PATCH] SUNRPC: Fix races between socket connection and destroy code\n"
+ "\n"
+ "When we're destroying the socket transport, we need to ensure that\n"
+ "we cancel any existing delayed connection attempts, and order them\n"
+ "w.r.t. the call to xs_close().\n"
+ "\n"
+ "Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>\n"
+ "---\n"
+ " net/sunrpc/xprtsock.c | 3 +++\n"
+ " 1 file changed, 3 insertions(+)\n"
+ "\n"
+ "diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c\n"
+ "index 7be90bc1a7c2..d2dfbd043bea 100644\n"
+ "--- a/net/sunrpc/xprtsock.c\n"
+ "+++ b/net/sunrpc/xprtsock.c\n"
+ "@@ -881,8 +881,11 @@ static void xs_xprt_free(struct rpc_xprt *xprt)\n"
+ "  */\n"
+ " static void xs_destroy(struct rpc_xprt *xprt)\n"
+ " {\n"
+ "+\tstruct sock_xprt *transport = container_of(xprt,\n"
+ "+\t\t\tstruct sock_xprt, xprt);\n"
+ " \tdprintk(\"RPC:       xs_destroy xprt %p\\n\", xprt);\n"
+ " \n"
+ "+\tcancel_delayed_work_sync(&transport->connect_worker);\n"
+ " \txs_close(xprt);\n"
+ " \txs_xprt_free(xprt);\n"
+ " \tmodule_put(THIS_MODULE);\n"
+ "-- \n"
+ "2.4.3\n"
+ "\n"
+ "\n"
+ "-- \n"
+ "Trond Myklebust\n"
+ "Linux NFS client maintainer, PrimaryData\n"
+ trond.myklebust@primarydata.com
 
-b6bb339c6787b1b4fe8f9eef215598989beb09c113f0ea55b997d85f9c9c6b28
+7fa57aa0cc04e4e534a1b0039e130b6af5650c4fcc46006c13078df84d73148e

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.