On Wed, Dec 21, 2016 at 04:52:32PM +0000, Visa Hankala wrote: > 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?
I was wondering wether the unp or the nfs layer is the right place for the workaround. As we have another XXXSMP in uipc_usrreq() this seems correct. OK bluhm@ > > 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: