Module Name: src Committed By: knakahara Date: Fri Nov 18 06:50:04 UTC 2016
Modified Files: src/sys/netinet: tcp_usrreq.c udp_usrreq.c src/sys/netinet6: dccp6_usrreq.c in6.c mld6.c raw_ip6.c sctp6_usrreq.c udp6_usrreq.c Log Message: fix: "ifconfig destory" can stalls when "ifconfig" is done parallel. This problem occurs only if NET_MPSAFE on. ifconfig destroy side: kernel entry point is ifioctl => if_clone_destroy. pr_purgeif() acquires softnet_lock, and then ifa_remove() calls pserialize_perform() holding softnet_lock. ifconfig side: kernel entry point is socreate. pr_attach()(udp_attach_wrapper()) calls sosetlock(). In this call path, sosetlock() try to acquire softnet_lock. These can cause dead lock. To generate a diff of this commit: cvs rdiff -u -r1.212 -r1.213 src/sys/netinet/tcp_usrreq.c cvs rdiff -u -r1.228 -r1.229 src/sys/netinet/udp_usrreq.c cvs rdiff -u -r1.8 -r1.9 src/sys/netinet6/dccp6_usrreq.c \ src/sys/netinet6/sctp6_usrreq.c cvs rdiff -u -r1.221 -r1.222 src/sys/netinet6/in6.c cvs rdiff -u -r1.74 -r1.75 src/sys/netinet6/mld6.c cvs rdiff -u -r1.152 -r1.153 src/sys/netinet6/raw_ip6.c cvs rdiff -u -r1.125 -r1.126 src/sys/netinet6/udp6_usrreq.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.