If the rpc.gssd always return cred success, but now the cred is
expired, then the task will loop in call_refresh and call_transmit.
Exit the rpc task after retry.
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
                        rpc_delay(task, HZ >> 4);
                        break;
                case -EKEYEXPIRED:
-                       task->tk_action = call_refresh;
+                       if (!task->tk_cred_retry) {
+                               rpc_exit(task, task->tk_status);
+                       } else {
+                               task->tk_action = call_refresh;
+                               task->tk_cred_retry--;
+                               dprintk("RPC: %5u %s: retry refresh creds\n",
+                                       task->tk_pid, __func__);
+                       }
                        break;
                default:
                        rpc_call_rpcerror(task, task->tk_status);