diff --git a/sys/netgraph/socket/ng_socket.c b/sys/netgraph/socket/ng_socket.c
index 636ae90..5eaeb01 100644
--- a/sys/netgraph/socket/ng_socket.c
+++ b/sys/netgraph/socket/ng_socket.c
@@ -745,13 +745,16 @@ ship_msg(struct ngpcb *pcbp, struct ng_mesg *msg, struct sockaddr_ng *addr)
 	}
 
 	/* Send it up to the socket */
+	lwkt_gettoken(&so->so_rcv.ssb_token);
 	if (ssb_appendaddr(&so->so_rcv,
 	    (struct sockaddr *) addr, mdata, NULL) == 0) {
+		lwkt_reltoken(&so->so_rcv.ssb_token);
 		TRAP_ERROR;
 		m_freem(mdata);
 		return (ENOBUFS);
 	}
 	sorwakeup(so);
+	lwkt_reltoken(&so->so_rcv.ssb_token);
 	return (0);
 }
 
@@ -864,12 +867,15 @@ ngs_rcvdata(hook_p hook, struct mbuf *m, meta_p meta)
 	NG_FREE_META(meta);
 
 	/* Try to tell the socket which hook it came in on */
+	lwkt_gettoken(&so->so_rcv.ssb_token);
 	if (ssb_appendaddr(&so->so_rcv, (struct sockaddr *) addr, m, NULL) == 0) {
+		lwkt_reltoken(&so->so_rcv.ssb_token);
 		m_freem(m);
 		TRAP_ERROR;
 		return (ENOBUFS);
 	}
 	sorwakeup(so);
+	lwkt_reltoken(&so->so_rcv.ssb_token);
 	return (0);
 }
 
