I'd like to assert that the socket lock is held when modifying `so_sate'. ok?
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); }