Module Name: src Committed By: ozaki-r Date: Wed Dec 21 08:47:02 UTC 2016
Modified Files: src/sys/net: if_llatbl.c if_llatbl.h src/sys/netinet6: in6.c nd6.c Log Message: Fix deadlock between llentry timers and destruction of llentry llentry timer (of nd6) holds both llentry's lock and softnet_lock. A caller also holds them and calls callout_halt to wait for the timer to quit. However we can pass only one lock to callout_halt, so passing either of them can cause a deadlock. Fix it by avoid calling callout_halt without holding llentry's lock. BTW in the first place we cannot pass llentry's lock to callout_halt because it's a rwlock... To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/net/if_llatbl.c cvs rdiff -u -r1.9 -r1.10 src/sys/net/if_llatbl.h cvs rdiff -u -r1.225 -r1.226 src/sys/netinet6/in6.c cvs rdiff -u -r1.221 -r1.222 src/sys/netinet6/nd6.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.