diff options
| author | ozaki-r <ozaki-r@NetBSD.org> | 2019-05-15 02:59:18 +0000 |
|---|---|---|
| committer | ozaki-r <ozaki-r@NetBSD.org> | 2019-05-15 02:59:18 +0000 |
| commit | f880630b39042b16accadf081d711607935e72c3 (patch) | |
| tree | da922c60ea0aca19b045a57cb879d75416a77bea /lib/lua/sqlite/sqlite.c | |
| parent | 81d706b55f20c4ab780cf07255a8668b79c79e6c (diff) | |
Get rid of IFNET_LOCK for if_mcast_op to avoid a deadlock
The IFNET_LOCK was added to avoid data races on if_flags for IFF_ALLMULTI.
Unfortunatetly it caused a deadlock instead. A known scenario causing a
deadlock is to occur the following two operations concurrently: (a) a removal of
an IP adddres assigned to an interface and (b) a manipulation of multicast
groups to the interface. The resource dependency graph is like this:
softnet_lock => IFNET_LOCK => psref_target_destroy => softint => softnet_lock
Thanks to the previous commit that avoids data races on if_flags for
IFF_ALLMULTI by another approach, we can remove IFNET_LOCK and defuse the
deadlock.
PR kern/54189
Diffstat (limited to 'lib/lua/sqlite/sqlite.c')
0 files changed, 0 insertions, 0 deletions
