It looks like the call that requires the lock was introduced in r337866.
Sponsored by: Dell EMC Isilon
Differential D20739
in6_joingroup_locked: need if_addr_lock around in6m_disconnect_locked rlibby on Jun 24 2019, 4:27 PM. Authored by Tags None Referenced Files
Details It looks like the call that requires the lock was introduced in r337866. Sponsored by: Dell EMC Isilon sysctl debug.fail_point.mnowait="1%return"
Diff Detail
Event TimelineComment Actions General background is that this patch and others are fallout from applying the error injection in D20714 (in this case, injecting errors for M_NOWAIT allocs of mbufs). They have mostly been tested with "it used to panic and now it doesn't," but I will see if I can confirm having tickled the specific error paths with dtrace. Comment Actions Here's this one. It really just demonstrates that the code path is executed and then we don't panic. I'm still working on demonstrating D20740. # dtrace \ -n 'fbt::in6_joingroup_locked:entry {self->arm6=1}' \ -n 'fbt::mld_change_state:return /self->arm6 == 1 && args[1] != 0/ {self->arm6=2;}' \ -n 'fbt::in6m_disconnect_locked:entry /self->arm6 == 2/ {stack();}' \ -n 'fbt::in6_joingroup_locked:return {self->arm6=0}' [...] CPU ID FUNCTION:NAME 5 54752 in6m_disconnect_locked:entry kernel`in6_joingroup_locked+0x552 kernel`in6_joingroup+0x44 kernel`in6_update_ifa+0x1882 kernel`in6_ifattach+0x558 kernel`in6_if_up+0x80 kernel`if_up+0x6a kernel`ifhwioctl+0xc77 kernel`ifioctl+0x529 kernel`kern_ioctl+0x28a kernel`sys_ioctl+0x15d kernel`amd64_syscall+0x276 kernel`0xffffffff8104542d # kyua test -k /usr/tests/sys/netpfil/Kyuafile |