diff options
Diffstat (limited to 'sys/netinet/accf_data.c')
-rw-r--r-- | sys/netinet/accf_data.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/netinet/accf_data.c b/sys/netinet/accf_data.c index 46c92e3..4470733 100644 --- a/sys/netinet/accf_data.c +++ b/sys/netinet/accf_data.c @@ -30,6 +30,8 @@ #include <sys/param.h> #include <sys/kernel.h> +#include <sys/lock.h> +#include <sys/mutex.h> #include <sys/sysctl.h> #include <sys/signalvar.h> #include <sys/socketvar.h> @@ -57,11 +59,15 @@ static void sohasdata(struct socket *so, void *arg, int waitflag) { - if (!soreadable(so)) + SOCK_LOCK(so); + if (!soreadable(so)) { + SOCK_UNLOCK(so); return; + } so->so_upcall = NULL; so->so_rcv.sb_flags &= ~SB_UPCALL; - soisconnected_locked(so); + soisconnected(so); + SOCK_UNLOCK(so); return; } |