]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
sunrpc: clear XPRT_SOCK_UPD_TIMEOUT when reset transport
authorLiu Jian <liujian56@huawei.com>
Fri, 15 Nov 2024 09:38:04 +0000 (17:38 +0800)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Thu, 28 Nov 2024 17:55:32 +0000 (12:55 -0500)
Since transport->sock has been set to NULL during reset transport,
XPRT_SOCK_UPD_TIMEOUT also needs to be cleared. Otherwise, the
xs_tcp_set_socket_timeouts() may be triggered in xs_tcp_send_request()
to dereference the transport->sock that has been set to NULL.

Fixes: 7196dbb02ea0 ("SUNRPC: Allow changing of the TCP timeout parameters on the fly")
Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
Signed-off-by: Liu Jian <liujian56@huawei.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/xprtsock.c

index d587c261d99912f9c09a528b916f84e32bb76f0c..31bc046e285021dd16a97d16908875361e6d4f0a 100644 (file)
@@ -1198,6 +1198,7 @@ static void xs_sock_reset_state_flags(struct rpc_xprt *xprt)
        clear_bit(XPRT_SOCK_WAKE_WRITE, &transport->sock_state);
        clear_bit(XPRT_SOCK_WAKE_DISCONNECT, &transport->sock_state);
        clear_bit(XPRT_SOCK_NOSPACE, &transport->sock_state);
+       clear_bit(XPRT_SOCK_UPD_TIMEOUT, &transport->sock_state);
 }
 
 static void xs_run_error_worker(struct sock_xprt *transport, unsigned int nr)