Network boot triggers a netlock recursion:
panic
rw_enter
sosend <- NET_LOCK()
nfs_send
nfs_request
nfs_lookup
VOP_LOOKUP
vfs_lookup
namei
unp_connect
uipc_usrreq
soconnect <- NET_LOCK()
sys_connect
An XXXSMP workaround seems appropriate here.
OK?
Index: kern/uipc_usrreq.c
===================================================================
RCS file: src/sys/kern/uipc_usrreq.c,v
retrieving revision 1.104
diff -u -p -r1.104 uipc_usrreq.c
--- kern/uipc_usrreq.c 19 Dec 2016 08:36:49 -0000 1.104
+++ kern/uipc_usrreq.c 21 Dec 2016 16:44:03 -0000
@@ -143,7 +143,10 @@ uipc_usrreq(struct socket *so, int req,
break;
case PRU_CONNECT:
+ /* XXXSMP breaks atomicity */
+ rw_exit_write(&netlock);
error = unp_connect(so, nam, p);
+ rw_enter_write(&netlock);
break;
case PRU_CONNECT2: