summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/raw_cb.c3
-rw-r--r--sys/net/raw_usrreq.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/sys/net/raw_cb.c b/sys/net/raw_cb.c
index eba5dc1..1e293af 100644
--- a/sys/net/raw_cb.c
+++ b/sys/net/raw_cb.c
@@ -32,7 +32,9 @@
#include <sys/param.h>
#include <sys/domain.h>
+#include <sys/lock.h>
#include <sys/malloc.h>
+#include <sys/mutex.h>
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
@@ -93,6 +95,7 @@ raw_detach(rp)
{
struct socket *so = rp->rcb_socket;
+ SOCK_LOCK(so);
so->so_pcb = 0;
sotryfree(so);
LIST_REMOVE(rp, list);
diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c
index f3747c5..9507267 100644
--- a/sys/net/raw_usrreq.c
+++ b/sys/net/raw_usrreq.c
@@ -34,6 +34,7 @@
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
+#include <sys/mutex.h>
#include <sys/protosw.h>
#include <sys/signalvar.h>
#include <sys/socket.h>
@@ -139,8 +140,9 @@ raw_uabort(struct socket *so)
if (rp == 0)
return EINVAL;
raw_disconnect(rp);
+ soisdisconnected(so);
+ SOCK_LOCK(so);
sotryfree(so);
- soisdisconnected(so); /* XXX huh? called after the sofree()? */
return 0;
}
OpenPOWER on IntegriCloud