linux/drivers/net/ethernet/intel/ixgbe
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
..
devlink ixgbe: stop re-reading flash on every get_drvinfo for e610 2026-04-06 13:39:23 -07:00
ixgbe_82598.c ixgbe: spelling corrections 2025-07-03 09:39:04 -07:00
ixgbe_82599.c ixgbe: Add 10G-BX support 2026-01-09 09:23:40 -08:00
ixgbe_common.c ixgbe: drop unnecessary casts to u16 / int 2025-09-03 10:07:27 -07:00
ixgbe_common.h ixgbe: downgrade logging of unsupported VF API version to debug 2024-12-03 10:11:53 -08:00
ixgbe_dcb_82598.c ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_dcb_82598.h ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_dcb_82599.c ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_dcb_82599.h ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_dcb_nl.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
ixgbe_dcb.c ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_dcb.h ixgbe: Convert ret val type from s32 to int 2024-02-06 13:17:14 -08:00
ixgbe_debugfs.c
ixgbe_e610.c ixgbe: e610: remove redundant assignment 2026-06-13 16:43:47 -07:00
ixgbe_e610.h ixgbe: E610: add EEE support 2026-05-02 19:12:37 -07:00
ixgbe_ethtool.c ixgbe: E610: do not fill EEE lp_advertised from local PHY caps 2026-05-08 18:21:43 -07:00
ixgbe_fcoe.c ixgbe: spelling corrections 2025-07-03 09:39:04 -07:00
ixgbe_fcoe.h
ixgbe_fw_update.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ixgbe_fw_update.h ixgbe: add device flash update via devlink 2025-04-15 07:36:32 -07:00
ixgbe_ipsec.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ixgbe_ipsec.h ixgbe: propagate XFRM offload state direction instead of flags 2022-05-06 08:32:52 +02:00
ixgbe_lib.c ixgbe: refactor: use DECLARE_BITMAP for ring state field 2026-03-03 08:56:05 -08:00
ixgbe_main.c net: prevent torn reads in netdev_tc_txq 2026-08-17 10:27:48 -07:00
ixgbe_mbx.c ixgbe: Enable link management in E610 device 2024-12-20 10:14:03 -08:00
ixgbe_mbx.h ixgbe: handle IXGBE_VF_FEATURES_NEGOTIATE mbox cmd 2025-10-13 17:44:49 -07:00
ixgbe_model.h
ixgbe_phy.c ixgbe: Add 10G-BX support 2026-01-09 09:23:40 -08:00
ixgbe_phy.h ixgbe: Add 10G-BX support 2026-01-09 09:23:40 -08:00
ixgbe_ptp.c ixgbe: use EOPNOTSUPP instead of ENOTSUPP in ixgbe_ptp_feature_enable() 2025-10-28 12:49:59 -07:00
ixgbe_sriov.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
ixgbe_sriov.h ixgbe: check for MDD events 2025-07-03 09:39:03 -07:00
ixgbe_sysfs.c
ixgbe_txrx_common.h ixgbe: pull out stats update to common routines 2024-03-06 09:32:58 -08:00
ixgbe_type_e610.h ixgbe: E610: update ACI command structs with EEE fields 2026-05-02 19:12:36 -07:00
ixgbe_type.h ixgbe: fix unaligned u32 access in ixgbe_update_flash_X550() 2026-05-02 19:12:46 -07:00
ixgbe_x540.c ixgbe: drop unnecessary casts to u16 / int 2025-09-03 10:07:27 -07:00
ixgbe_x540.h ixgbe: Add ixgbe_x540 multiple header inclusion protection 2024-12-20 10:14:02 -08:00
ixgbe_x550.c ixgbe: fix unaligned u32 access in ixgbe_update_flash_X550() 2026-05-02 19:12:46 -07:00
ixgbe_x550.h ixgbe: add MDD support 2025-07-03 09:39:03 -07:00
ixgbe_xsk.c ixgbe: refactor: use DECLARE_BITMAP for ring state field 2026-03-03 08:56:05 -08:00
ixgbe.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-09 13:20:59 -07:00
Makefile ixgbe: devlink: add devlink region support for E610 2025-04-29 15:13:44 -07:00