From: Greg Kroah-Hartman Date: Thu, 17 Jan 2013 16:06:29 +0000 (-0800) Subject: 3.0: remove sunrpc patch that wasn't needed X-Git-Tag: v3.7.3~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=25cccd51589fa2d92d6536de976684fdc39070a1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0: remove sunrpc patch that wasn't needed --- diff --git a/review-3.0/series b/review-3.0/series index 090f3a687d9..b13c6686ef5 100644 --- a/review-3.0/series +++ b/review-3.0/series @@ -15,7 +15,6 @@ target-tcm_fc-fix-the-lockdep-warning-due-to-inconsistent-lock-state.patch mfd-only-unregister-platform-devices-allocated-by-the-mfd-core.patch ext4-fix-memory-leak-in-ext4_xattr_set_acl-s-error-path.patch sunrpc-ensure-that-we-free-the-rpc_task-after-cleanups-are-done.patch -sunrpc-ensure-we-release-the-socket-write-lock-if-the-rpc_task-exits-early.patch jffs2-hold-erase_completion_lock-on-exit.patch i2400m-add-intel-6150-device-ids.patch drm-i915-make-the-panel-fitter-work-on-pipes-b-and-c-on-ivb.patch diff --git a/review-3.0/sunrpc-ensure-we-release-the-socket-write-lock-if-the-rpc_task-exits-early.patch b/review-3.0/sunrpc-ensure-we-release-the-socket-write-lock-if-the-rpc_task-exits-early.patch deleted file mode 100644 index 8f098096323..00000000000 --- a/review-3.0/sunrpc-ensure-we-release-the-socket-write-lock-if-the-rpc_task-exits-early.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 87ed50036b866db2ec2ba16b2a7aec4a2b0b7c39 Mon Sep 17 00:00:00 2001 -From: Trond Myklebust -Date: Mon, 7 Jan 2013 14:30:46 -0500 -Subject: SUNRPC: Ensure we release the socket write lock if the rpc_task exits early - -From: Trond Myklebust - -commit 87ed50036b866db2ec2ba16b2a7aec4a2b0b7c39 upstream. - -If the rpc_task exits while holding the socket write lock before it has -allocated an rpc slot, then the usual mechanism for releasing the write -lock in xprt_release() is defeated. - -The problem occurs if the call to xprt_lock_write() initially fails, so -that the rpc_task is put on the xprt->sending wait queue. If the task -exits after being assigned the lock by __xprt_lock_write_func, but -before it has retried the call to xprt_lock_and_alloc_slot(), then -it calls xprt_release() while holding the write lock, but will -immediately exit due to the test for task->tk_rqstp != NULL. - -Reported-by: Chris Perl -Signed-off-by: Trond Myklebust -Signed-off-by: Greg Kroah-Hartman - ---- - net/sunrpc/sched.c | 3 +-- - net/sunrpc/xprt.c | 12 ++++++++++-- - 2 files changed, 11 insertions(+), 4 deletions(-) - ---- a/net/sunrpc/sched.c -+++ b/net/sunrpc/sched.c -@@ -882,8 +882,7 @@ static void rpc_async_release(struct wor - - static void rpc_release_resources_task(struct rpc_task *task) - { -- if (task->tk_rqstp) -- xprt_release(task); -+ xprt_release(task); - if (task->tk_msg.rpc_cred) { - put_rpccred(task->tk_msg.rpc_cred); - task->tk_msg.rpc_cred = NULL; ---- a/net/sunrpc/xprt.c -+++ b/net/sunrpc/xprt.c -@@ -1040,10 +1040,18 @@ static void xprt_request_init(struct rpc - void xprt_release(struct rpc_task *task) - { - struct rpc_xprt *xprt; -- struct rpc_rqst *req; -+ struct rpc_rqst *req = task->tk_rqstp; - -- if (!(req = task->tk_rqstp)) -+ if (req == NULL) { -+ if (task->tk_client) { -+ rcu_read_lock(); -+ xprt = rcu_dereference(task->tk_client->cl_xprt); -+ if (xprt->snd_task == task) -+ xprt_release_write(xprt, task); -+ rcu_read_unlock(); -+ } - return; -+ } - - xprt = req->rq_xprt; - rpc_count_iostats(task);