freebsd-dev/sys/net
Mark Johnston a363e1d4d0 iflib: Fix handling of mbuf cluster allocation failures.
When refilling an rx freelist, make sure we only update the hardware
producer index if at least one cluster was allocated.  Otherwise the
NIC is programmed to write a previously used cluster, typically
resulting in a use-after-free when packet data is written by the
hardware.

Also make sure that we don't update the fragment index cursor if the
last allocation attempt didn't succeed.  For at least Intel drivers,
iflib assumes that the consumer index and fragment index cursor stay in
lockstep, but this assumption was violated in the face of cluster
allocation failures.

Reported and tested by:	pho
Reviewed by:	gallatin, hselasky
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D25489
2020-07-06 14:52:09 +00:00
..
altq Use a void * argument to callout handlers instead of timeout_t casts. 2019-12-05 18:47:29 +00:00
route Switch rtsock code to using newly-create rib_action() KPI call. 2020-06-10 07:46:22 +00:00
bpf_buffer.c Add an external mbuf buffer type that holds multiple unmapped pages. 2019-06-29 00:48:33 +00:00
bpf_buffer.h
bpf_filter.c
bpf_jitter.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
bpf_jitter.h Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
bpf_zerocopy.c Change synchonization rules for vm_page reference counting. 2019-09-09 21:32:42 +00:00
bpf_zerocopy.h
bpf.c To avoid a startup script race change net.bpf.optimize_writers from 2020-06-23 13:57:53 +00:00
bpf.h Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
bpfdesc.h Rework locking in BPF code to remove rwlock from fast path. 2019-05-13 13:45:28 +00:00
bridgestp.c bridge: Fix panic if the STP root is removed 2019-03-15 11:21:20 +00:00
bridgestp.h
debugnet_inet.c Implement NetGDB(4) 2019-10-17 21:33:01 +00:00
debugnet_int.h Implement NetGDB(4) 2019-10-17 21:33:01 +00:00
debugnet.c Convert debugnet to the new routing KPI. 2020-04-26 18:42:38 +00:00
debugnet.h Implement NetGDB(4) 2019-10-17 21:33:01 +00:00
dlt.h MFV r353141 (by phillip): 2019-12-21 21:01:03 +00:00
ethernet.h typo: stray spaces. 2020-02-07 15:16:04 +00:00
firewire.h
ieee8023ad_lacp.c make lacp's use_numa hashing aware of send tags 2020-03-09 13:44:51 +00:00
ieee8023ad_lacp.h make lacp's use_numa hashing aware of send tags 2020-03-09 13:44:51 +00:00
ieee_oui.h Fix a typo in r349969 2019-07-14 03:49:48 +00:00
if_arp.h Improve ARP logging. 2019-03-09 01:12:59 +00:00
if_bridge.c bridge: epoch-ification 2020-04-26 16:22:35 +00:00
if_bridgevar.h libifconfig: Add function to get bridge status 2020-07-01 02:32:41 +00:00
if_clone.c epair: Do not abuse params to register the second interface 2020-01-28 22:44:24 +00:00
if_clone.h epair: Do not abuse params to register the second interface 2020-01-28 22:44:24 +00:00
if_dead.c This adds the third step in getting BBR into the tree. BBR and 2019-08-01 14:17:31 +00:00
if_debug.c
if_disc.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
if_dl.h
if_edsc.c if_edsc: generate an arbitrary MAC address 2020-03-02 02:45:57 +00:00
if_enc.c Consistently include opt_ipsec.h for consumers of <netipsec/ipsec.h>. 2020-05-29 19:22:40 +00:00
if_enc.h
if_epair.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
if_ethersubr.c ethersubr: Make the mac address generation more robust 2020-04-18 07:50:30 +00:00
if_fwsubr.c Improve copy-and-pasted versions of SIOCGIFADDR. 2018-03-27 20:51:49 +00:00
if_gif.c Add if_reassing method to all tunneling interfaces. 2020-06-03 13:02:31 +00:00
if_gif.h gif_transmit() must always be called in the network epoch. 2020-01-15 06:18:32 +00:00
if_gre.c Add if_reassing method to all tunneling interfaces. 2020-06-03 13:02:31 +00:00
if_gre.h Add GRE-in-UDP encapsulation support as defined in RFC8086. 2019-04-24 09:05:45 +00:00
if_ipsec.c Add if_reassing method to all tunneling interfaces. 2020-06-03 13:02:31 +00:00
if_ipsec.h
if_lagg.c Decode the "LACP Fast Timeout" LAGG option flag 2020-06-11 22:46:08 +00:00
if_lagg.h Decode the "LACP Fast Timeout" LAGG option flag 2020-06-11 22:46:08 +00:00
if_llatbl.c * Add rib_<add|del|change>_route() functions to manipulate the routing table. 2020-06-01 20:49:42 +00:00
if_llatbl.h Implement optional table entry limits for if_llatbl. 2020-03-04 17:17:02 +00:00
if_llc.h
if_loop.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
if_me.c Add if_reassing method to all tunneling interfaces. 2020-06-03 13:02:31 +00:00
if_media.c if_media.c: staticize and constify ifmedia description structures used under IFMEDIA_DEBUG. 2020-02-11 17:45:01 +00:00
if_media.h if_media.h: Add 50G KR4 ethernet media type. 2020-02-11 18:03:45 +00:00
if_mib.c net.link.generic.ifdata.<ifindex>.linkspecific: rework handler 2020-06-21 18:40:17 +00:00
if_mib.h
if_pflog.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
if_pfsync.h
if_sppp.h
if_spppfr.c
if_spppsubr.c Don't use if_maddr_rlock() in sppp(4), use epoch(9) directly instead. 2019-10-10 23:54:37 +00:00
if_stf.c Complete conversions from fib<4|6>_lookup_nh_<basic|ext> to fib<4|6>_lookup(). 2020-07-02 21:04:08 +00:00
if_tap.h tap: add support for virtio-net offloads 2019-10-18 21:53:27 +00:00
if_tun.h if_tuntap(4): Add TUNGIFNAME 2019-07-25 22:23:34 +00:00
if_tuntap.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
if_types.h
if_var.h Move <add|del|change>_route() functions to route_ctl.c in preparation of 2020-05-23 19:06:57 +00:00
if_vlan_var.h Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
if_vlan.c vlan: Fix panic when vnet jail with a vlan interface is destroyed 2020-01-31 22:54:44 +00:00
if_vxlan.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
if_vxlan.h
if.c Use epoch(9) for rtentries to simplify control plane operations. 2020-05-23 10:21:02 +00:00
if.h Although most of the NIC drivers are epoch ready, due to peer pressure 2020-02-24 21:07:30 +00:00
ifdi_if.m iflib: Stop interface before (un)registering VLAN 2020-04-27 22:02:44 +00:00
iflib_clone.c - Remove the unused ifc_link_irq and ifc_mtx_name members of struct iflib_ctx. 2019-05-06 20:56:41 +00:00
iflib_private.h - Replace unused and only ever written to members of public iflib(9) 2019-06-15 11:07:41 +00:00
iflib.c iflib: Fix handling of mbuf cluster allocation failures. 2020-07-06 14:52:09 +00:00
iflib.h iflib: fix cloneattach fail and generalize pseudo device handling 2020-06-21 22:02:49 +00:00
ifq.h
mp_ring.c - Merge r338254 from cxgbe(4): 2019-05-09 11:34:46 +00:00
mp_ring.h mp_ring: avoid items offset difference between iflib and mp_ring 2019-01-03 23:06:05 +00:00
mppc.h
mppcc.c kernel: provide panicky version of __unreachable 2020-05-13 18:07:37 +00:00
mppcd.c
netisr_internal.h
netisr.c sysctl: fix setting net.isr.dispatch during early boot 2020-05-16 17:05:44 +00:00
netisr.h
netmap_legacy.h add valectl to the system commands 2019-10-31 21:01:34 +00:00
netmap_user.h netmap: check if we already ran mmap before we attempt it 2019-11-19 21:29:49 +00:00
netmap_virt.h netmap: disable passthrough with no hypervisor support 2020-01-13 21:47:23 +00:00
netmap.h netmap: import changes from upstream (SHA 137f537eae513) 2019-09-01 14:47:41 +00:00
paravirt.h
pfil.c Since now drivers that support pfil run their interrupts in the network 2020-01-23 01:49:22 +00:00
pfil.h Most Ethernet drivers that potentially can run a pfil(9) hook with 2019-03-10 17:20:09 +00:00
pfkeyv2.h Refer to AES-CBC as "aes-cbc" rather than "rijndael-cbc" for IPsec. 2020-06-04 22:58:37 +00:00
pfvar.h pf: Add a new zone for per-table entry counters. 2020-05-16 00:28:12 +00:00
ppp_defs.h
radix_mpath.c Convert more rtentry field accesses into nhop fields accesses. 2020-04-29 21:54:09 +00:00
radix_mpath.h Convert rtalloc_mpath_fib() users to the new KPI. 2020-04-28 08:06:56 +00:00
radix.c Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
radix.h Fix typo. 2018-06-16 19:21:09 +00:00
raw_cb.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
raw_cb.h
raw_usrreq.c
rndis.h
route.c * Add rib_<add|del|change>_route() functions to manipulate the routing table. 2020-06-01 20:49:42 +00:00
route.h * Add rib_<add|del|change>_route() functions to manipulate the routing table. 2020-06-01 20:49:42 +00:00
rss_config.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
rss_config.h
rtsock.c Switch rtsock code to using newly-create rib_action() KPI call. 2020-06-10 07:46:22 +00:00
sff8436.h
sff8472.h net: Update SFF-8024 definitions and strings with values from rev 4.6 2019-08-17 00:10:56 +00:00
slcompress.c
slcompress.h
toeplitz.c
toeplitz.h
vnet.c Partially revert VNET change and expand VNET structure. 2020-02-17 11:08:50 +00:00
vnet.h Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00