diff options
author | glebius <glebius@FreeBSD.org> | 2005-02-19 14:41:49 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2005-02-19 14:41:49 +0000 |
commit | 5af7592fcaa201625b712d9220f205f09b852e96 (patch) | |
tree | 004e8501aed0eccb6ec4b1ac4bcb93388f638a5b /sys/netgraph | |
parent | 37e21562530b0c46787ff9b23d8d0451c5bf4c71 (diff) | |
download | FreeBSD-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.c | 6 |
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); |