hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/sunrpc/clnt.c
....@@ -1361,7 +1361,7 @@
13611361 break;
13621362 default:
13631363 err = -EAFNOSUPPORT;
1364
- goto out;
1364
+ goto out_release;
13651365 }
13661366 if (err < 0) {
13671367 dprintk("RPC: can't bind UDP socket (%d)\n", err);
....@@ -1967,9 +1967,6 @@
19671967 status = -EOPNOTSUPP;
19681968 break;
19691969 }
1970
- if (task->tk_rebind_retry == 0)
1971
- break;
1972
- task->tk_rebind_retry--;
19731970 rpc_delay(task, 3*HZ);
19741971 goto retry_timeout;
19751972 case -ENOBUFS:
....@@ -2357,8 +2354,7 @@
23572354 goto out_exit;
23582355 }
23592356 task->tk_action = call_encode;
2360
- if (status != -ECONNRESET && status != -ECONNABORTED)
2361
- rpc_check_timeout(task);
2357
+ rpc_check_timeout(task);
23622358 return;
23632359 out_exit:
23642360 rpc_call_rpcerror(task, status);
....@@ -2633,6 +2629,7 @@
26332629 case rpc_autherr_rejectedverf:
26342630 case rpcsec_gsserr_credproblem:
26352631 case rpcsec_gsserr_ctxproblem:
2632
+ rpcauth_invalcred(task);
26362633 if (!task->tk_cred_retry)
26372634 break;
26382635 task->tk_cred_retry--;
....@@ -3026,6 +3023,8 @@
30263023 int
30273024 rpc_clnt_swap_activate(struct rpc_clnt *clnt)
30283025 {
3026
+ while (clnt != clnt->cl_parent)
3027
+ clnt = clnt->cl_parent;
30293028 if (atomic_inc_return(&clnt->cl_swapper) == 1)
30303029 return rpc_clnt_iterate_for_each_xprt(clnt,
30313030 rpc_clnt_swap_activate_callback, NULL);
....@@ -3045,6 +3044,8 @@
30453044 void
30463045 rpc_clnt_swap_deactivate(struct rpc_clnt *clnt)
30473046 {
3047
+ while (clnt != clnt->cl_parent)
3048
+ clnt = clnt->cl_parent;
30483049 if (atomic_dec_if_positive(&clnt->cl_swapper) == 0)
30493050 rpc_clnt_iterate_for_each_xprt(clnt,
30503051 rpc_clnt_swap_deactivate_callback, NULL);