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.