Re: [PATCH net-next v2 0/3] net: Avoid ehash lookup races
From: luoxuanqiang <hidden>
Date: 2025-09-16 08:12:16
在 2025/9/16 15:30, Eric Dumazet 写道:
On Mon, Sep 15, 2025 at 11:47 PM [off-list ref] wrote:quoted
From: Xuanqiang Luo <redacted> After replacing R/W locks with RCU in commit 3ab5aee7fe84 ("net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls"), a race window emerged during the switch from reqsk/sk to sk/tw. Now that both timewait sock (tw) and full sock (sk) reside on the same ehash chain, it is appropriate to introduce hlist_nulls replace operations, to eliminate the race conditions caused by this window. --- Changes: v2: * Patch 1 * Use WRITE_ONCE() to initialize old->pprev. * Patch 2&3 * Optimize sk hashed check. Thanks Kuni for pointing it out! v1: https://lore.kernel.org/all/20250915070308.111816-1-xuanqiang.luo@linux.dev/ (local)Note : I think you sent an earlier version, you should have added a link to the discussion, and past feedback/suggestions. Lack of credit is a bit annoying frankly. I will take a look at your series, thanks.
This patch's solution isn't very related to previous ones, so I didn't include prior discussions. But to help others get the full picture, I'll share past links and earlier discussions related to this type of issue in the next version or a reply. Sorry for any oversight. Thanks Xuanqiang.
quoted
Xuanqiang Luo (3): rculist: Add __hlist_nulls_replace_rcu() and hlist_nulls_replace_init_rcu() inet: Avoid ehash lookup race in inet_ehash_insert() inet: Avoid ehash lookup race in inet_twsk_hashdance_schedule() include/linux/rculist_nulls.h | 61 +++++++++++++++++++++++++++++++++++ include/net/sock.h | 23 +++++++++++++ net/ipv4/inet_hashtables.c | 4 ++- net/ipv4/inet_timewait_sock.c | 15 ++++----- 4 files changed, 93 insertions(+), 10 deletions(-) -- 2.25.1