]> git.ipfire.org Git - thirdparty/linux.git/commit
Merge branch 'net-avoid-ehash-lookup-races'
authorJakub Kicinski <kuba@kernel.org>
Fri, 17 Oct 2025 23:08:45 +0000 (16:08 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 17 Oct 2025 23:08:46 +0000 (16:08 -0700)
commit38f3cd3703df239badbd439e093b922efbc57ed1
tree285157df36a8157122a4eab2ddba9a7a76a2b8c6
parent1c17f4373d4db1e1f0ebd3ddcd8e7a642927a826
parentb8ec80b130211e7bf076ef72365952979d5f7a72
Merge branch 'net-avoid-ehash-lookup-races'

Xuanqiang Luo says:

====================
net: Avoid ehash lookup races

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.

Before this series of patches, I previously sent another version of the
patch, attempting to avoid the issue using a lock mechanism. However, it
seems there are some problems with that approach now, so I've switched to
the "replace" method in the current patches to resolve the issue.
For details, refer to:
https://lore.kernel.org/netdev/20250903024406.2418362-1-xuanqiang.luo@linux.dev/

Before I encountered this type of issue recently, I found there had been
several historical discussions about it. Therefore, I'm adding this
background information for those interested to reference:
1. https://lore.kernel.org/lkml/20230118015941.1313-1-kerneljasonxing@gmail.com/
2. https://lore.kernel.org/netdev/20230606064306.9192-1-duanmuquan@baidu.com/
====================

Link: https://patch.msgid.link/20251015020236.431822-1-xuanqiang.luo@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>