Index | Thread | Search

From:
Alexander Bluhm <alexander.bluhm@gmx.net>
Subject:
Re: Use `sb_mtx' instead of `inp_mtx' in receive path for inet sockets
To:
Vitaliy Makkoveev <mvs@openbsd.org>
Cc:
tech@openbsd.org
Date:
Mon, 12 Feb 2024 15:57:20 +0100

Download raw body.

Thread
On Mon, Feb 12, 2024 at 03:25:14AM +0300, Vitaliy Makkoveev wrote:
> This time only sbappendaddr() requires to hold sb_mtx for some
> cases, so it uses sbmtxassertlocked() instead of soassertlocked().

I looks like regress already found something.  This was a test with
your diff applied.

[-- MARK -- Sun Feb 11 21:30:00 2024]
splassert: soassertlocked: want 0 have 1
Starting stack trace...
soassertlocked(0) at soassertlocked+0xc7
soassertlocked(d7e26a68) at soassertlocked+0xc7
sbappendaddr(d7e26a68,d7e26adc,f58028c4,d8c73900,0) at sbappendaddr+0x21
divert_packet(d8c73900,1,9a02) at divert_packet+0x239
pf_test(2,1,d835c830,f5802a70) at pf_test+0x873
ip_input_if(f5802a70,f5802a5c,f5802a88,0,d835c830) at ip_input_if+0xab
ipv4_input(d835c830,d8c73900) at ipv4_input+0x3a
ether_input(d835c830,d8c73900) at ether_input+0x2c4
if_input_process(d835c830,f5802ac4) at if_input_process+0x4d
ifiq_process(d835cb00) at ifiq_process+0x66
taskq_thread(d82e7000) at taskq_thread+0x84
End of stack trace.
splassert: soassertlocked: want 0 have 1
Starting stack trace...
soassertlocked(0) at soassertlocked+0xc7
soassertlocked(d7d0f43c) at soassertlocked+0xc7
sbappendaddr(d7d0f43c,d7d0f4b0,f580282c,d8db4600,0) at sbappendaddr+0x21
divert6_packet(d8db4600,1,9a02) at divert6_packet+0x250
pf_test(18,1,d835c830,f5802a70) at pf_test+0x929
ip6_input_if(f5802a70,f5802a5c,29,0,d835c830) at ip6_input_if+0x1bd
ipv6_input(d835c830,d8db4600) at ipv6_input+0x2b
ether_input(d835c830,d8db4600) at ether_input+0x2c4
if_input_process(d835c830,f5802ac4) at if_input_process+0x4d
ifiq_process(d835cb00) at ifiq_process+0x66
taskq_thread(d82e7000) at taskq_thread+0x84
End of stack trace.
splassert: soassertlocked: want 0 have 1
Starting stack trace...
soassertlocked(0) at soassertlocked+0xc7
soassertlocked(d7e24e44) at soassertlocked+0xc7
sbappendaddr(d7e24e44,d7e24eb8,f59db8a4,d838dc00,0) at sbappendaddr+0x21
divert_packet(d838dc00,2,9a02) at divert_packet+0x239
pf_test(2,2,d835c830,f59dba60) at pf_test+0x873
ip_output(d838dc00,0,d7e2382c,0,0,d7e238b4,0) at ip_output+0x49a
udp_output(d7e237e0,d838dc00,0,0) at udp_output+0x37a
udp_send(d7e24bb4,d838dc00,0,0) at udp_send+0xbe
sosend(d7e24bb4,0,f59dbb6c,d838dc00,0,0) at sosend+0x2d8
sendit(d7e6dd1c,1,f59dbbc0,0,f59dbc38) at sendit+0x2cc
sys_sendto(d7e6dd1c,f59dbc40,f59dbc38) at sys_sendto+0x5c
syscall(f59dbc80) at syscall+0x55e
Xsyscall_untramp() at Xsyscall_untramp+0xa9
end of kernel
End of stack trace.
splassert: soassertlocked: want 0 have 1
Starting stack trace...
soassertlocked(0) at soassertlocked+0xc7
soassertlocked(d7d0fbec) at soassertlocked+0xc7
sbappendaddr(d7d0fbec,d7d0fc60,f59db5d8,d9127d00,0) at sbappendaddr+0x21
divert6_packet(d9127d00,2,9a02) at divert6_packet+0x250
pf_test(18,2,d835c830,f59db7dc) at pf_test+0x929
ip6_output(d9127d00,0,d7e2343c,0,0,d7e234c4) at ip6_output+0xafe
udp6_output(d7e233f0,d9127d00,0,0) at udp6_output+0x3fd
udp_send(d7d0f43c,d9127d00,0,0) at udp_send+0xbe
sosend(d7d0f43c,0,f59db94c,d9127d00,0,0) at sosend+0x2d8
sendit(d7e6dd1c,1,f59db9a0,0,f59dba18) at sendit+0x2cc
sys_sendto(d7e6dd1c,f59dba20,f59dba18) at sys_sendto+0x5c
syscall(f59dba60) at syscall+0x55e
Xsyscall_untramp() at Xsyscall_untramp+0xa9
end of kernel
End of stack trace.
[-- MARK -- Sun Feb 11 21:35:00 2024]