Commit c5212a24 authored by Liu Jian's avatar Liu Jian
Browse files

sunrpc: clear XPRT_SOCK_UPD_TIMEOUT when reset transport

stable inclusion
from stable-v6.6.64
commit 3811172e8c98ceebd12fe526ca6cb37a1263c964
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB4JBR

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3811172e8c98ceebd12fe526ca6cb37a1263c964



-------------------------------------------------

[ Upstream commit 4db9ad82a6c823094da27de4825af693a3475d51 ]

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: 7196dbb0 ("SUNRPC: Allow changing of the TCP timeout parameters on the fly")
Signed-off-by: default avatarLi Lingfeng <lilingfeng3@huawei.com>
Signed-off-by: default avatarLiu Jian <liujian56@huawei.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarLiu Jian <liujian56@huawei.com>
parent 46064348
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1186,6 +1186,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)