diff options
author | glebius <glebius@FreeBSD.org> | 2005-04-18 11:32:17 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2005-04-18 11:32:17 +0000 |
commit | dcecb5d15d9defce4d4f28a6f666eae1968f1356 (patch) | |
tree | 37f85362c17be1d43562f5b52fb8b6d2ac57e74e /sys/netgraph | |
parent | 70f9a6c90e213d207ca926afafff7f9a9f19424b (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/netgraph/ng_ksocket.c | 14 |
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); |