All of lore.kernel.org
 help / color / mirror / Atom feed
From: Youngmin Nam <youngmin.nam@samsung.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: stable@vger.kernel.org, ncardwell@google.com,
	edumazet@google.com, kuba@kernel.org, davem@davemloft.net,
	dsahern@kernel.org, pabeni@redhat.com, horms@kernel.org,
	guo88.liu@samsung.com, yiwang.cai@samsung.com,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	joonki.min@samsung.com, hajun.sung@samsung.com,
	d7271.choe@samsung.com, sw.ju@samsung.com,
	dujeong.lee@samsung.com, ycheng@google.com, yyd@google.com,
	kuro@kuroa.me, cmllamas@google.com, willdeacon@google.com,
	maennich@google.com, gregkh@google.com,
	Lorenzo Colitti <lorenzo@google.com>,
	Jason Xing <kerneljasonxing@gmail.com>,
	Youngmin Nam <youngmin.nam@samsung.com>
Subject: Re: [PATCH 2/2] tcp: fix forever orphan socket caused by tcp_abort
Date: Mon, 17 Mar 2025 13:32:48 +0900	[thread overview]
Message-ID: <Z9el8JIHMsRbFRSd@perf> (raw)
In-Reply-To: <2025031411-sandbag-scabby-eb1c@gregkh>

[-- Attachment #1: Type: text/plain, Size: 3054 bytes --]

On Fri, Mar 14, 2025 at 01:24:26PM +0100, Greg KH wrote:
> On Fri, Mar 14, 2025 at 06:24:46PM +0900, Youngmin Nam wrote:
> > From: Xueming Feng <kuro@kuroa.me>
> > 
> > commit bac76cf89816bff06c4ec2f3df97dc34e150a1c4 upstream.
> > 
> > We have some problem closing zero-window fin-wait-1 tcp sockets in our
> > environment. This patch come from the investigation.
> > 
> > Previously tcp_abort only sends out reset and calls tcp_done when the
> > socket is not SOCK_DEAD, aka orphan. For orphan socket, it will only
> > purging the write queue, but not close the socket and left it to the
> > timer.
> > 
> > While purging the write queue, tp->packets_out and sk->sk_write_queue
> > is cleared along the way. However tcp_retransmit_timer have early
> > return based on !tp->packets_out and tcp_probe_timer have early
> > return based on !sk->sk_write_queue.
> > 
> > This caused ICSK_TIME_RETRANS and ICSK_TIME_PROBE0 not being resched
> > and socket not being killed by the timers, converting a zero-windowed
> > orphan into a forever orphan.
> > 
> > This patch removes the SOCK_DEAD check in tcp_abort, making it send
> > reset to peer and close the socket accordingly. Preventing the
> > timer-less orphan from happening.
> > 
> > According to Lorenzo's email in the v1 thread, the check was there to
> > prevent force-closing the same socket twice. That situation is handled
> > by testing for TCP_CLOSE inside lock, and returning -ENOENT if it is
> > already closed.
> > 
> > The -ENOENT code comes from the associate patch Lorenzo made for
> > iproute2-ss; link attached below, which also conform to RFC 9293.
> > 
> > At the end of the patch, tcp_write_queue_purge(sk) is removed because it
> > was already called in tcp_done_with_error().
> > 
> > p.s. This is the same patch with v2. Resent due to mis-labeled "changes
> > requested" on patchwork.kernel.org.
> > 
> > Link: https://protect2.fireeye.com/v1/url?k=f1caf90b-ae51376f-f1cb7244-000babda0201-1111684dae24e0cf&q=1&e=32bd2804-1687-48c6-945d-f20eded99c42&u=https%3A%2F%2Fpatchwork.ozlabs.org%2Fproject%2Fnetdev%2Fpatch%2F1450773094-7978-3-git-send-email-lorenzo%40google.com%2F
> > Fixes: c1e64e298b8c ("net: diag: Support destroying TCP sockets.")
> > Signed-off-by: Xueming Feng <kuro@kuroa.me>
> > Tested-by: Lorenzo Colitti <lorenzo@google.com>
> > Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
> > Reviewed-by: Eric Dumazet <edumazet@google.com>
> > Link: https://protect2.fireeye.com/v1/url?k=66416ec8-39daa0ac-6640e587-000babda0201-21346ca5121765eb&q=1&e=32bd2804-1687-48c6-945d-f20eded99c42&u=https%3A%2F%2Fpatch.msgid.link%2F20240826102327.1461482-1-kuro%40kuroa.me
> > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > Cc: <stable@vger.kernel.org> # v5.10+
> 
> Does not apply to 6.1.y or older, what did you want this applied to?
> 
> thanks,
> 
> greg k-h
> 
Hi Greg,

Sorry about that. Let me resend these patches for 6.1 and 5.15.

As for 5.10, it seems to have more dependencies for the backport.
I think the maintainer should handle it to ensure a safe backport.

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



  reply	other threads:[~2025-03-17  4:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20250314092125epcas2p418cd0caeffc32b05fba4fdd2e4ffb9fa@epcas2p4.samsung.com>
2025-03-14  9:24 ` [PATCH 1/2] tcp: fix races in tcp_abort() Youngmin Nam
2025-03-14  9:24   ` [PATCH 2/2] tcp: fix forever orphan socket caused by tcp_abort Youngmin Nam
2025-03-14 12:24     ` Greg KH
2025-03-17  4:32       ` Youngmin Nam [this message]
2025-03-14 12:24   ` [PATCH 1/2] tcp: fix races in tcp_abort() Greg KH
2025-03-17  4:36     ` Youngmin Nam
2025-03-14 23:10   ` Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z9el8JIHMsRbFRSd@perf \
    --to=youngmin.nam@samsung.com \
    --cc=cmllamas@google.com \
    --cc=d7271.choe@samsung.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=dujeong.lee@samsung.com \
    --cc=edumazet@google.com \
    --cc=gregkh@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=guo88.liu@samsung.com \
    --cc=hajun.sung@samsung.com \
    --cc=horms@kernel.org \
    --cc=joonki.min@samsung.com \
    --cc=kerneljasonxing@gmail.com \
    --cc=kuba@kernel.org \
    --cc=kuro@kuroa.me \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo@google.com \
    --cc=maennich@google.com \
    --cc=ncardwell@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=sw.ju@samsung.com \
    --cc=willdeacon@google.com \
    --cc=ycheng@google.com \
    --cc=yiwang.cai@samsung.com \
    --cc=yyd@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.