Revert "tcp: fix forever orphan socket caused by tcp_abort"

This reverts commit b753821e06 which is
commit bac76cf89816bff06c4ec2f3df97dc34e150a1c4 upstream.

It breaks Android testing and can be brought back in the future
in an safe way if it is really needed.

Bug: 411037744
Change-Id: I8a0f8b55aa851ea12f13f76ee45d705b1433cd42
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2025-04-16 09:49:38 +00:00
parent c5f96457ad
commit 0f8bbe98f1

View File

@@ -4729,12 +4729,6 @@ int tcp_abort(struct sock *sk, int err)
/* Don't race with userspace socket closes such as tcp_close. */
lock_sock(sk);
/* Avoid closing the same socket twice. */
if (sk->sk_state == TCP_CLOSE) {
release_sock(sk);
return -ENOENT;
}
if (sk->sk_state == TCP_LISTEN) {
tcp_set_state(sk, TCP_CLOSE);
inet_csk_listen_stop(sk);
@@ -4744,12 +4738,15 @@ int tcp_abort(struct sock *sk, int err)
local_bh_disable();
bh_lock_sock(sk);
if (tcp_need_reset(sk->sk_state))
tcp_send_active_reset(sk, GFP_ATOMIC);
tcp_done_with_error(sk, err);
if (!sock_flag(sk, SOCK_DEAD)) {
if (tcp_need_reset(sk->sk_state))
tcp_send_active_reset(sk, GFP_ATOMIC);
tcp_done_with_error(sk, err);
}
bh_unlock_sock(sk);
local_bh_enable();
tcp_write_queue_purge(sk);
release_sock(sk);
return 0;
}