Hold SOCK_LOCK(so) when frobbing so_state when disconnecting a

connected UNIX domain datagram socket.
This commit is contained in:
rwatson 2004-06-20 21:29:56 +00:00
parent 4586528554
commit 8c7c75cc62

View File

@ -906,6 +906,7 @@ unp_disconnect(unp)
struct unpcb *unp;
{
register struct unpcb *unp2 = unp->unp_conn;
struct socket *so;
UNP_LOCK_ASSERT();
@ -916,7 +917,10 @@ unp_disconnect(unp)
case SOCK_DGRAM:
LIST_REMOVE(unp, unp_reflink);
unp->unp_socket->so_state &= ~SS_ISCONNECTED;
so = unp->unp_socket;
SOCK_LOCK(so);
so->so_state &= ~SS_ISCONNECTED;
SOCK_UNLOCK(so);
break;
case SOCK_STREAM: