-
由 Chuck Lever 提交于
mainline inclusion from mainline-5.7-rc3 commit 6221f1d9 category: bugfix bugzilla: 51810 CVE: NA ------------------------------------------------- Currently, after the forward channel connection goes away, backchannel operations are causing soft lockups on the server because call_transmit_status's SOFTCONN logic ignores ENOTCONN. Such backchannel Calls are aggressively retried until the client reconnects. Backchannel Calls should use RPC_TASK_NOCONNECT rather than RPC_TASK_SOFTCONN. If there is no forward connection, the server is not capable of establishing a connection back to the client, thus that backchannel request should fail before the server attempts to send it. Commit 58255a4e ("NFSD: NFSv4 callback client should use RPC_TASK_SOFTCONN") was merged several years before RPC_TASK_NOCONNECT was available. Because setup_callback_client() explicitly sets NOPING, the NFSv4.0 callback connection depends on the first callback RPC to initiate a connection to the client. Thus NFSv4.0 needs to continue to use RPC_TASK_SOFTCONN. Suggested-by: NTrond Myklebust <trondmy@hammerspace.com> Signed-off-by: NChuck Lever <chuck.lever@oracle.com> Cc: <stable@vger.kernel.org> # v4.20+ (cherry picked from commit 6221f1d9) Signed-off-by: NYufen Wang <wangyufen@huawei.com> Reviewed-by: NYue Haibing <yuehaibing@huawei.com> Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
399f2ab5