linux/drivers/net
Eric Dumazet 21ef2d065a net: prevent torn reads in netdev_tc_txq
netdev_set_tc_queue() (and related helpers/drivers such as
netdev_bind_sb_channel_queue(), netdev_reset_tc(), and
netdev_unbind_sb_channel()) perform separate 16-bit writes to
dev->tc_to_txq[tc].count and dev->tc_to_txq[tc].offset.

Furthermore, memset() in netdev_reset_tc() and
netdev_unbind_sb_channel() provides no guarantee of performing
full 32-bit word stores.

Concurrent lockless readers (e.g. skb_tx_hash(), netdev_txq_to_tc(),
ixgbe_select_queue(), taprio, mqprio, FPE drivers) can observe torn
values where offset and count belong to inconsistent configurations.

Redefine struct netdev_tc_txq to embed count and offset inside a union
with a u32 combined field, allowing atomic manipulation via
READ_ONCE() and WRITE_ONCE().

Update all lockless readers and writers across the kernel to use
READ_ONCE() and WRITE_ONCE() on the combined field.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260812085440.3917924-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-08-17 10:27:48 -07:00
..
arcnet
bonding bonding: fix wrong extack attribute in ARP validate netlink error path 2026-08-10 16:15:09 -07:00
can can: ems_usb: validate CPC message lengths 2026-07-29 12:00:18 +02:00
dsa net: dsa: mt7530: serialize the regmap IRQ chip like every other user 2026-08-07 16:39:02 -07:00
ethernet net: prevent torn reads in netdev_tc_txq 2026-08-17 10:27:48 -07:00
fddi
fjes fjes: cancel force_close_task in fjes_remove() 2026-08-06 09:19:58 -07:00
hyperv
ieee802154
ipa
ipvlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
mctp net: mctp: usb: Allow multiple urbs in flight 2026-07-30 16:55:00 -07:00
mdio net: mdio: Kconfig: Group mdio multiplexers in a submenu 2026-07-22 15:00:53 -07:00
netdevsim netdevsim: drop the ability to change max_vfs via debugfs 2026-08-13 17:38:05 -07:00
ovpn ovpn: defer key slot crypto freeing to workqueue 2026-08-09 22:47:57 +02:00
pcs net: pcs: mtk-lynxi: check regmap reads in mtk_pcs_lynxi_get_state() 2026-08-07 16:38:46 -07:00
phy net: phylink: treat PSGMII as an inband capable interface 2026-08-13 18:21:31 -07:00
plip
ppp pptp: drop packets received before connect 2026-08-12 17:17:53 -07:00
pse-pd net: remove conditional return with no effect 2026-07-30 13:04:03 +02:00
slip net: slip: serialize receive against buffer reallocation 2026-07-23 09:06:48 -07:00
team net: team: check register_netdevice_notifier() error in team_module_init() 2026-08-04 18:50:02 -07:00
thunderbolt net: thunderbolt: Tear down DMA paths before stopping the rings 2026-08-06 08:19:53 -07:00
usb net: usb: lg-vl600: fix Ethernet header on fragmented RX packets 2026-08-13 18:55:35 -07:00
vmxnet3 vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets 2026-07-22 13:52:44 -07:00
vxlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
wan net: lapbether: check register_netdevice_notifier() error in lapbeth_init_driver() 2026-08-04 18:49:03 -07:00
wireguard net: Use helpers to get/set UDP len tree-wide 2026-07-22 13:47:02 +02:00
wireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
wwan net: wwan: add exclusive open mode capability to AT and QCDM ports 2026-07-30 11:05:14 +02:00
xen-netback
amt.c amt: Don't support cross-netns setup. 2026-08-10 16:03:03 -07:00
bareudp.c bareudp: Support per-netns netdev unregistration. 2026-07-11 12:57:50 +02:00
dummy.c
eql.c
geneve.c net: geneve: remove unused geneve_dev_create_fb 2026-08-06 15:09:23 +02:00
gtp.c gtp: check skb_pull_data() return in gtp1u_send_echo_resp() 2026-07-21 15:02:29 -07:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-07-20 09:18:11 +02:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
macvtap.c
Makefile
mdio.c
mhi_net.c
mii.c
net_failover.c
netconsole.c netconsole: publish the userdata payload with RCU 2026-08-13 15:04:40 +02:00
netkit.c
nlmon.c
ntb_netdev.c NTB: ntb_netdev: Preserve RX queue depth on allocation failure 2026-08-11 11:04:55 +02:00
pfcp.c pfcp: Support per-netns netdev unregistration. 2026-08-05 17:44:06 -07:00
rionet.c
sungem_phy.c
tap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
tun_vnet.h tun: no longer rely on RTNL in tun_fill_info() 2026-07-10 17:29:43 +02:00
tun.c tun/tap & vhost-net: stop tail-drop when IFF_BACKPRESSURE is set 2026-08-07 17:29:16 -07:00
veth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
virtio_net.c
vrf.c net: vrf: check register_netdevice_notifier() error in vrf_init_module() 2026-08-04 18:53:35 -07:00
vsockmon.c
xen-netfront.c