diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 0339c16ef9708ea289af252e39214c048199f2b5..3fdf7883cc058d9b84e324a4df8cb54b6fcbb692 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -1962,8 +1962,11 @@ call_transmit(struct rpc_task *task) /* Was the error nonfatal? */ if (task->tk_status == -EAGAIN) rpc_delay(task, HZ >> 4); - else if (task->tk_status == -EKEYEXPIRED) + else if (task->tk_status == -EKEYEXPIRED && + task->tk_cred_retry) { + task->tk_cred_retry--; task->tk_action = call_refresh; + } else rpc_exit(task, task->tk_status); return;