summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/ng_ksocket.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-04-18 11:32:17 +0000
committerglebius <glebius@FreeBSD.org>2005-04-18 11:32:17 +0000
commitdcecb5d15d9defce4d4f28a6f666eae1968f1356 (patch)
tree37f85362c17be1d43562f5b52fb8b6d2ac57e74e /sys/netgraph/ng_ksocket.c
parent70f9a6c90e213d207ca926afafff7f9a9f19424b (diff)
downloadFreeBSD-src-dcecb5d15d9defce4d4f28a6f666eae1968f1356.zip
FreeBSD-src-dcecb5d15d9defce4d4f28a6f666eae1968f1356.tar.gz
Fix panics with misconfigured routing:
- Backout previous revision, the check is useless. - Turn node to queue mode, since it is edge node. Reported by: sem
Diffstat (limited to 'sys/netgraph/ng_ksocket.c')
-rw-r--r--sys/netgraph/ng_ksocket.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/netgraph/ng_ksocket.c b/sys/netgraph/ng_ksocket.c
index 3d21798..60b4c3a 100644
--- a/sys/netgraph/ng_ksocket.c
+++ b/sys/netgraph/ng_ksocket.c
@@ -596,6 +596,14 @@ ng_ksocket_newhook(node_p node, hook_p hook, const char *name0)
/* OK */
priv->hook = hook;
+
+ /*
+ * In case of misconfigured routing a packet may reenter
+ * ksocket node recursively. Decouple stack to avoid possible
+ * panics about sleeping with locks held.
+ */
+ NG_HOOK_FORCE_QUEUE(hook);
+
return(0);
}
@@ -897,12 +905,6 @@ 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