tcp: factor out __tcp_close() helper
[ Upstream commit 77c3c95637526f1e4330cc9a4b2065f668c2c4fe ] unlocked version of protocol level close, will be used by MPTCP to allow decouple orphaning and subflow level close. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d428676420
commit
5a9dc14df2
@ -391,6 +391,7 @@ void tcp_update_metrics(struct sock *sk);
|
||||
void tcp_init_metrics(struct sock *sk);
|
||||
void tcp_metrics_init(void);
|
||||
bool tcp_peer_is_proven(struct request_sock *req, struct dst_entry *dst);
|
||||
void __tcp_close(struct sock *sk, long timeout);
|
||||
void tcp_close(struct sock *sk, long timeout);
|
||||
void tcp_init_sock(struct sock *sk);
|
||||
void tcp_init_transfer(struct sock *sk, int bpf_op);
|
||||
|
@ -2351,13 +2351,12 @@ bool tcp_check_oom(struct sock *sk, int shift)
|
||||
return too_many_orphans || out_of_socket_memory;
|
||||
}
|
||||
|
||||
void tcp_close(struct sock *sk, long timeout)
|
||||
void __tcp_close(struct sock *sk, long timeout)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
int data_was_unread = 0;
|
||||
int state;
|
||||
|
||||
lock_sock(sk);
|
||||
sk->sk_shutdown = SHUTDOWN_MASK;
|
||||
|
||||
if (sk->sk_state == TCP_LISTEN) {
|
||||
@ -2521,6 +2520,12 @@ adjudge_to_death:
|
||||
out:
|
||||
bh_unlock_sock(sk);
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
void tcp_close(struct sock *sk, long timeout)
|
||||
{
|
||||
lock_sock(sk);
|
||||
__tcp_close(sk, timeout);
|
||||
release_sock(sk);
|
||||
sock_put(sk);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user