On Mon, Jul 03, 2017 at 02:42:15PM +0200, Martin Pieuchot wrote: > I'd like to assert that the socket lock is held when modifying > `so_sate'. > > ok?
OK bluhm@ > > Index: kern/uipc_socket2.c > =================================================================== > RCS file: /cvs/src/sys/kern/uipc_socket2.c,v > retrieving revision 1.80 > diff -u -p -r1.80 uipc_socket2.c > --- kern/uipc_socket2.c 27 Jun 2017 12:02:43 -0000 1.80 > +++ kern/uipc_socket2.c 3 Jul 2017 12:35:46 -0000 > @@ -89,7 +89,7 @@ int sbsleep(struct sockbuf *, struct rwl > void > soisconnecting(struct socket *so) > { > - > + soassertlocked(so); > so->so_state &= ~(SS_ISCONNECTED|SS_ISDISCONNECTING); > so->so_state |= SS_ISCONNECTING; > } > @@ -99,6 +99,7 @@ soisconnected(struct socket *so) > { > struct socket *head = so->so_head; > > + soassertlocked(so); > so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING); > so->so_state |= SS_ISCONNECTED; > if (head && soqremque(so, 0)) { > @@ -115,7 +116,7 @@ soisconnected(struct socket *so) > void > soisdisconnecting(struct socket *so) > { > - > + soassertlocked(so); > so->so_state &= ~SS_ISCONNECTING; > so->so_state |= (SS_ISDISCONNECTING|SS_CANTRCVMORE|SS_CANTSENDMORE); > wakeup(&so->so_timeo); > @@ -126,7 +127,7 @@ soisdisconnecting(struct socket *so) > void > soisdisconnected(struct socket *so) > { > - > + soassertlocked(so); > so->so_state &= ~(SS_ISCONNECTING|SS_ISCONNECTED|SS_ISDISCONNECTING); > so->so_state |= (SS_CANTRCVMORE|SS_CANTSENDMORE|SS_ISDISCONNECTED); > wakeup(&so->so_timeo); > @@ -259,7 +260,7 @@ soqremque(struct socket *so, int q) > void > socantsendmore(struct socket *so) > { > - > + soassertlocked(so); > so->so_state |= SS_CANTSENDMORE; > sowwakeup(so); > } > @@ -267,7 +268,7 @@ socantsendmore(struct socket *so) > void > socantrcvmore(struct socket *so) > { > - > + soassertlocked(so); > so->so_state |= SS_CANTRCVMORE; > sorwakeup(so); > }