mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
ksmbd: enable TCP keepalive for accepted connections
A client that disappears without sending a FIN or RST can leave its ksmbd connection in ESTABLISHED indefinitely. ksmbd sets a socket receive timeout, but the connection receive loop retries timeout errors without a limit, so the connection remains in conn_list and consumes the per-IP connection quota. Enable SO_KEEPALIVE on accepted TCP sockets so the TCP stack can detect a silent peer failure. The keepalive idle time, interval, and probe count remain controlled by the existing TCP sysctl settings. Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
parent
7de5cf9bcf
commit
56549c18a4
|
|
@ -292,6 +292,12 @@ static int ksmbd_kthread_fn(void *p)
|
|||
ksmbd_debug(CONN, "connect success: accepted new connection\n");
|
||||
client_sk->sk->sk_rcvtimeo = KSMBD_TCP_RECV_TIMEOUT;
|
||||
client_sk->sk->sk_sndtimeo = KSMBD_TCP_SEND_TIMEOUT;
|
||||
/*
|
||||
* Detect peers that disappear without sending a FIN or RST.
|
||||
* Otherwise the connection handler can retry receive timeouts
|
||||
* indefinitely and keep the connection in conn_list.
|
||||
*/
|
||||
sock_set_keepalive(client_sk->sk);
|
||||
|
||||
ksmbd_tcp_new_connection(client_sk);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user