Skip to content

Commit

Permalink
SUNRPC: Ensure the RPC client only quits on fatal signals
Browse files Browse the repository at this point in the history
Fix a couple of instances where we were exiting the RPC client on
arbitrary signals. We should only do so on fatal signals.

Cc: stable@kernel.org
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Jun 17, 2011
1 parent ee7b75f commit 5afa913
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions net/sunrpc/auth_gss/auth_gss.c
Original file line number Diff line number Diff line change
Expand Up @@ -577,13 +577,13 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
}
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;
}
Expand Down
2 changes: 1 addition & 1 deletion net/sunrpc/clnt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,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;
Expand Down

0 comments on commit 5afa913

Please sign in to comment.