freebsd-nq/sys/netgraph
Robert Watson 77dfcdc445 Rework global locks for interface list and index management, correcting
several critical bugs, including race conditions and lock order issues:

Replace the single rwlock, ifnet_lock, with two locks, an rwlock and an
sxlock.  Either can be held to stablize the lists and indexes, but both
are required to write.  This allows the list to be held stable in both
network interrupt contexts and sleepable user threads across sleeping
memory allocations or device driver interactions.  As before, writes to
the interface list must occur from sleepable contexts.

Reviewed by:	bz, julian
MFC after:	3 days
2009-08-23 20:40:19 +00:00
..
atm Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
bluetooth Introduce and use a sysinit-based initialization scheme for virtual 2009-07-23 20:46:49 +00:00
netflow Fix copy-paste bug in NGM_NETFLOW_SETCONFIG argument size verification. 2009-05-13 02:26:34 +00:00
netgraph.h Introduce and use a sysinit-based initialization scheme for virtual 2009-07-23 20:46:49 +00:00
ng_async.c
ng_async.h
ng_atmllc.c
ng_atmllc.h
ng_base.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_bpf.c
ng_bpf.h
ng_bridge.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_bridge.h
ng_car.c
ng_car.h
ng_cisco.c
ng_cisco.h
ng_deflate.c Use m_unshare()+m_copyback() instead of m_freem()+m_devget() to keep 2009-01-18 19:25:36 +00:00
ng_deflate.h
ng_device.c
ng_device.h
ng_echo.c
ng_echo.h
ng_eiface.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_eiface.h
ng_etf.c
ng_etf.h
ng_ether_echo.c Add a trivial node to reflect ethernet frames to whence they came. 2008-12-25 00:01:29 +00:00
ng_ether_echo.h Add a trivial node to reflect ethernet frames to whence they came. 2008-12-25 00:01:29 +00:00
ng_ether.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_ether.h
ng_fec.c Change if_output to take a struct route as its fourth argument in order 2009-04-16 20:30:28 +00:00
ng_fec.h
ng_frame_relay.c
ng_frame_relay.h
ng_gif_demux.c
ng_gif_demux.h
ng_gif.c Rework global locks for interface list and index management, correcting 2009-08-23 20:40:19 +00:00
ng_gif.h
ng_hole.c
ng_hole.h
ng_hub.c
ng_hub.h
ng_iface.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_iface.h Check for infinite recursion possible on some broken PPTP/L2TP/... VPN setups. 2009-01-20 22:26:09 +00:00
ng_ip_input.c Introduce a mechanism for detecting calls from outbound path of the 2009-06-11 16:50:49 +00:00
ng_ip_input.h
ng_ipfw.c Close long existed race with net.inet.ip.fw.one_pass = 0: 2009-06-09 21:27:11 +00:00
ng_ipfw.h Close long existed race with net.inet.ip.fw.one_pass = 0: 2009-06-09 21:27:11 +00:00
ng_ksocket.c - Turn the third (islocked) argument of the knote call into flags parameter. 2009-06-28 21:49:43 +00:00
ng_ksocket.h
ng_l2tp.c Add memmove() to the kernel, making the kernel compile with Clang. 2009-02-28 16:21:25 +00:00
ng_l2tp.h
ng_lmi.c
ng_lmi.h
ng_message.h World now builds without these defines, so eliminate them. 2009-06-09 07:07:20 +00:00
ng_mppc.c If source mbuf chain consists of only one mbuf, use it directly as source 2009-01-18 21:09:34 +00:00
ng_mppc.h
ng_nat.c
ng_nat.h
ng_one2many.c
ng_one2many.h
ng_parse.c
ng_parse.h
ng_pipe.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_pipe.h
ng_ppp.c Remove strict limitation on minimal multilink MRRU. RFC claims that MRRU 2009-01-18 12:03:43 +00:00
ng_ppp.h
ng_pppoe.c Make Netgraph compile with Clang. 2009-03-03 18:47:33 +00:00
ng_pppoe.h Make Netgraph compile with Clang. 2009-03-03 18:47:33 +00:00
ng_pptpgre.c
ng_pptpgre.h
ng_pred1.c Use m_unshare()+m_copyback() instead of m_freem()+m_devget() to keep 2009-01-18 19:25:36 +00:00
ng_pred1.h
ng_rfc1490.c
ng_rfc1490.h
ng_sample.c
ng_sample.h
ng_socket.c Introduce and use a sysinit-based initialization scheme for virtual 2009-07-23 20:46:49 +00:00
ng_socket.h
ng_socketvar.h
ng_source.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ng_source.h
ng_split.c
ng_split.h
ng_sppp.c
ng_sppp.h
ng_tag.c
ng_tag.h
ng_tcpmss.c
ng_tcpmss.h
ng_tee.c
ng_tee.h
ng_tty.c Remove node shutdown on tty close. This could be easily done by user-level 2008-12-13 22:05:46 +00:00
ng_tty.h Assign new cookie to the node to reflect API change. 2008-11-08 02:05:41 +00:00
ng_UI.c
ng_UI.h
ng_vjc.c Mark ng_vjc node as FORCE_WRITER to protect slcompress state. 2009-01-08 17:51:15 +00:00
ng_vjc.h
ng_vlan.c
ng_vlan.h
NOTES