[Bug 289184] lock order reversal between tcphash (tcp_usrreq.c:1529) and in6_ifaddr_lock (in6_src.c:301)

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 12 Sep 2025 19:36:36 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=289184

Jonathan T. Looney <jtl@freebsd.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jtl@freebsd.org

--- Comment #1 from Jonathan T. Looney <jtl@freebsd.org> ---
(In reply to Gordon Bergling from comment #0)
I can't reproduce that locally, but I think that lock order is correct.

Can you try running with the below patch? Hopefully, this will find the place
where the other lock order is used.

diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index a65c3ca128d9..047366679adb 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -566,6 +566,12 @@ static struct witness_order_list_entry order_lists[] = {
        { "tcp", &lock_class_mtx_sleep },
        { "so_snd", &lock_class_mtx_sleep },
        { NULL, NULL },
+       /*
+        * IPv6 Addr
+        */
+       { "tcphash", &lock_class_mtx_sleep },
+       { "in6_ifaddr_lock", &lock_class_rm },
+       { NULL, NULL },
        /*
         * BPF
         */

-- 
You are receiving this mail because:
You are the assignee for the bug.