| From 054f9d9b168aae937be347d00b0795138e1fb1bf Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <Trond.Myklebust@netapp.com> |
| Date: Fri, 17 Jun 2011 10:14:59 -0400 |
| Subject: [PATCH] SUNRPC: Ensure the RPC client only quits on fatal signals |
| |
| commit 5afa9133cfe67f1bfead6049a9640c9262a7101c upstream. |
| |
| Fix a couple of instances where we were exiting the RPC client on |
| arbitrary signals. We should only do so on fatal signals. |
| |
| Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| net/sunrpc/auth_gss/auth_gss.c | 4 ++-- |
| net/sunrpc/clnt.c | 2 +- |
| 2 files changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c |
| index c369ea6..891b59e 100644 |
| --- a/net/sunrpc/auth_gss/auth_gss.c |
| +++ b/net/sunrpc/auth_gss/auth_gss.c |
| @@ -554,13 +554,13 @@ retry: |
| } |
| inode = &gss_msg->inode->vfs_inode; |
| for (;;) { |
| - prepare_to_wait(&gss_msg->waitqueue, &wait, TASK_INTERRUPTIBLE); |
| + prepare_to_wait(&gss_msg->waitqueue, &wait, TASK_KILLABLE); |
| spin_lock(&inode->i_lock); |
| if (gss_msg->ctx != NULL || gss_msg->msg.errno < 0) { |
| break; |
| } |
| spin_unlock(&inode->i_lock); |
| - if (signalled()) { |
| + if (fatal_signal_pending(current)) { |
| err = -ERESTARTSYS; |
| goto out_intr; |
| } |
| diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c |
| index 19c9983..0ad7828 100644 |
| --- a/net/sunrpc/clnt.c |
| +++ b/net/sunrpc/clnt.c |
| @@ -939,7 +939,7 @@ call_allocate(struct rpc_task *task) |
| |
| dprintk("RPC: %5u rpc_buffer allocation failed\n", task->tk_pid); |
| |
| - if (RPC_IS_ASYNC(task) || !signalled()) { |
| + if (RPC_IS_ASYNC(task) || !fatal_signal_pending(current)) { |
| task->tk_action = call_allocate; |
| rpc_delay(task, HZ>>4); |
| return; |
| -- |
| 1.7.9.6 |
| |