summaryrefslogtreecommitdiffstats
path: root/sys/netgraph
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-02-19 14:41:49 +0000
committerglebius <glebius@FreeBSD.org>2005-02-19 14:41:49 +0000
commit5af7592fcaa201625b712d9220f205f09b852e96 (patch)
tree004e8501aed0eccb6ec4b1ac4bcb93388f638a5b /sys/netgraph
parent37e21562530b0c46787ff9b23d8d0451c5bf4c71 (diff)
downloadFreeBSD-src-5af7592fcaa201625b712d9220f205f09b852e96.zip
FreeBSD-src-5af7592fcaa201625b712d9220f205f09b852e96.tar.gz
Reimplement recursion protection, checking whether current thread holds
sockbuf mutex. Reviewed by: rwatson
Diffstat (limited to 'sys/netgraph')
-rw-r--r--sys/netgraph/ng_ksocket.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/netgraph/ng_ksocket.c b/sys/netgraph/ng_ksocket.c
index d311beb..3d21798 100644
--- a/sys/netgraph/ng_ksocket.c
+++ b/sys/netgraph/ng_ksocket.c
@@ -897,6 +897,12 @@ ng_ksocket_rcvdata(hook_p hook, item_p item)
struct mbuf *m;
struct sa_tag *stag;
+ /* Avoid reentrantly sending on the socket */
+ if (SOCKBUF_OWNED(&so->so_snd)) {
+ NG_FREE_ITEM(item);
+ return (EDEADLK);
+ }
+
/* Extract data */
NGI_GET_M(item, m);
NG_FREE_ITEM(item);
OpenPOWER on IntegriCloud