freebsd-nq/sys/netgraph
Aleksandr Fedorov 0e6e2c4ef3 netgraph(4): Don't process NGQF_MESG items in NET_EPOCH context.
Netgraph has two main types of message items:

- NGQF_DATA items are used for data processing. This is a hot path that
should be called from a NET_EPOCH context.

- NGQF_MESG items are used for node configuration. There are many places
in netgraph(4) where processing the NGQF_MESG item can call sections of code
that are forbidden in the NET_EPOCH context.

All item types can be queued and then processed using ngthread().
But ngthread() is unconditionally enter in the NET_EPOCH section for all types.
This causes panic/deadlocks when processing NGQF_MESG elements.

Reported by:	mjg
Reviewed by:	glebius, vmaffione (mentor)
Tested by:	mjg, afedorov
Approved by:	glebius, vmaffione (mentor)
Sponsored by:	vstack.com
Differential Revision:	https://reviews.freebsd.org/D36496
2022-09-13 17:20:41 +03:00
..
atm netgraph(3): Fix a typo in a source code comment 2022-03-28 19:31:50 +02:00
bluetooth protosw: refactor protosw and domain static declaration and load 2022-08-17 11:50:32 -07:00
netflow ng_netflow: Move various variables under INET || INET6. 2022-04-13 16:08:21 -07:00
netgraph.h netgraph: Remove the rethook parameter from NG_NODE_FOREACH_HOOK. 2022-04-12 14:58:59 -07:00
ng_async.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_async.h
ng_atmllc.c
ng_atmllc.h
ng_base.c netgraph(4): Don't process NGQF_MESG items in NET_EPOCH context. 2022-09-13 17:20:41 +03:00
ng_bpf.c netgraph: Remove the rethook parameter from NG_NODE_FOREACH_HOOK. 2022-04-12 14:58:59 -07:00
ng_bpf.h
ng_bridge.c netgraph: Remove the rethook parameter from NG_NODE_FOREACH_HOOK. 2022-04-12 14:58:59 -07:00
ng_bridge.h netgraph/ng_bridge: learn MACs via control message 2021-05-04 22:14:59 +02:00
ng_car.c Fix packet cbs/ebs conversion. 2021-05-19 11:04:08 -04:00
ng_car.h netgraph/ng_car: Add color marking code 2021-01-27 21:22:51 +01:00
ng_checksum.c netgraph/ng_checksum: Fix double free error 2021-05-16 19:39:51 +02:00
ng_checksum.h
ng_cisco.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_cisco.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_deflate.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_deflate.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_device.c Add ETHER_ALIGN support to ng_device(4). 2021-11-14 13:37:41 +01:00
ng_device.h Add ETHER_ALIGN support to ng_device(4). 2021-11-14 13:37:41 +01:00
ng_echo.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_echo.h
ng_eiface.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_eiface.h
ng_etf.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_etf.h
ng_ether_echo.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_ether_echo.h
ng_ether.c ng_ether: Create netgraph nodes for bridge interfaces. 2021-09-26 01:24:33 +09:00
ng_ether.h
ng_frame_relay.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_frame_relay.h
ng_gif_demux.c
ng_gif_demux.h
ng_gif.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_gif.h
ng_hole.c
ng_hole.h
ng_hub.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_hub.h
ng_iface.c routing: Allow using IPv6 next-hops for IPv4 routes (RFC 5549). 2021-08-22 22:56:08 +00:00
ng_iface.h ng_iface(4): Remove unsupported protocols. 2020-07-31 14:08:54 +00:00
ng_ip_input.c Widen NET_EPOCH coverage. 2019-10-07 22:40:05 +00:00
ng_ip_input.h
ng_ipfw.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_ipfw.h
ng_ksocket.c divert: declare PF_DIVERT domain and stop abusing PF_INET 2022-08-30 15:09:21 -07:00
ng_ksocket.h
ng_l2tp.c netgraph: Remove the rethook parameter from NG_NODE_FOREACH_HOOK. 2022-04-12 14:58:59 -07:00
ng_l2tp.h
ng_lmi.c ng_lmi: Move all of highest_dlci under #if 0. 2022-04-07 17:01:27 -07:00
ng_lmi.h
ng_macfilter.c netgraph: macfilter: small fixes 2020-12-09 15:28:56 +00:00
ng_macfilter.h New Netgraph module ng_macfilter: 2020-12-08 15:09:42 +00:00
ng_message.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_mppc.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_mppc.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_nat.c netgraph/ng_nat: Add RFC 6598/Carrier Grade NAT support 2021-01-24 20:38:35 +01:00
ng_nat.h netgraph/ng_nat: Add RFC 6598/Carrier Grade NAT support 2021-01-24 20:38:35 +01:00
ng_one2many.c netgraph/ng_one2main: Clarification in comments about copy mode 2021-01-18 14:10:34 +01:00
ng_one2many.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_parse.c ng_parse: IP address parsing in netgraph eating too many characters 2021-05-18 22:36:28 +02:00
ng_parse.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_patch.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_patch.h
ng_pipe.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_pipe.h Increase BER to PER lookup table size in an attempt to mitigate panics 2020-08-18 22:46:46 +00:00
ng_ppp.c ng_ppp: Remove unused variable. 2022-04-07 17:01:27 -07:00
ng_ppp.h
ng_pppoe.c ng_pppoe: introduce new sysctl net.graph.pppoe.lcp_pcp 2022-05-02 21:57:12 +07:00
ng_pppoe.h ng_pppoe(4): Fix a typo in a source code comment 2022-04-02 13:54:36 +02:00
ng_pptpgre.c ng_pptpgre(4): Fix a typo in a source code comment 2021-11-03 17:15:59 +01:00
ng_pptpgre.h
ng_pred1.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_pred1.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_rfc1490.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_rfc1490.h
ng_sample.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_sample.h
ng_socket.c protosw: refactor protosw and domain static declaration and load 2022-08-17 11:50:32 -07:00
ng_socket.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_socketvar.h
ng_source.c netgraph/ng_source: Switch queuing framework 2021-01-29 12:34:53 +01:00
ng_source.h
ng_split.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_split.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_tag.c ng_tag: Move totlen fully under #ifdef NG_TAG_DEBUG. 2022-04-07 17:01:27 -07:00
ng_tag.h
ng_tcpmss.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_tcpmss.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_tee.c
ng_tee.h
ng_tty.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_tty.h
ng_UI.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_UI.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_vjc.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_vjc.h
ng_vlan_rotate.c netgraph/ng_vlan_rotate: IEEE 802.1ad VLAN manipulation netgraph type 2021-01-26 16:53:24 +01:00
ng_vlan_rotate.h netgraph/ng_vlan_rotate: IEEE 802.1ad VLAN manipulation netgraph type 2021-01-26 16:53:24 +01:00
ng_vlan.c net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
ng_vlan.h net: clean up empty lines in .c and .h files 2020-09-01 21:19:14 +00:00
NOTES
qos.h netgraph/ng_car: Add color marking code 2021-01-27 21:22:51 +01:00