On Fri, Jul 22, 2022 at 09:43:02PM +0200, Alexander Bluhm wrote: > Hi, > > During regress testing I found this bug. > > splassert: rip6_input: want 1 have 2 > Starting stack trace... > rip6_input(1,2,d0c6b7ad,f57ff9fc) at rip6_input+0x166 > rip6_input(f57ffbfc,f57ffbe8,3a,18) at rip6_input+0x166 > icmp6_input(f57ffbfc,f57ffbe8,3a,18) at icmp6_input+0x66d > ip_deliver(f57ffbfc,f57ffbe8,3a,18) at ip_deliver+0xf4 > ip6_input_if(f57ffbfc,f57ffbe8,29,0,d7066830) at ip6_input_if+0x88a > ipv6_input(d7066830,dafe5400) at ipv6_input+0x2b > ether_input(d7066830,dafe5400) at ether_input+0x3a9 > if_input_process(d7066830,f57ffc54) at if_input_process+0x5d > ifiq_process(d7066ae0) at ifiq_process+0x57 > taskq_thread(d6ff1040) at taskq_thread+0x69 > End of stack trace. > > ip6_input() has shared net lock. ip_deliver() needs exclusive net > lock. Use ip6_ours() to queue the packet. Move the write lock > assertion into ip_deliver() to catch such bugs earlier. > > The assertion is only triggered with IPv6 multicast forwarding or > router alert hop by hop option. So nobody noticed it.
OK kn
