[PATCH net 0/6] xsk: harden TX metadata validation against races

From: Stanislav Fomichev

Date: Mon Jul 27 2026 - 12:31:44 EST


Cen Zhang reported a KASAN out-of-bounds read when AF_XDP is configured
with a TX metadata area smaller than struct xsk_tx_metadata. The metadata
is also shared with user space, so reading its flags more than once can
produce inconsistent validation and processing decisions.

Require enough space for the flags and one request field, validate the
launch-time field against the configured metadata length, and use one
snapshot of the flags while processing each request. Carry the validated
decision through completion handling so later user-space changes cannot
enable an unrequested completion timestamp.

Reported-by: AutonomousCodeSecurity@xxxxxxxxxxxxx
Reported-by: Cen Zhang (Microsoft) <blbllhy@xxxxxxxxx>
Link: https://lore.kernel.org/netdev/20260720155210.34229-1-blbllhy@xxxxxxxxx/

Stanislav Fomichev (6):
xsk: require at least 16 bytes of TX metadata
xsk: pass TX metadata pointer by reference
xsk: clear metadata pointer when no timestamp is requested
xsk: validate launch-time metadata size
xsk: move xsk_tx_metadata_request() to xdp_sock_drv.h
xsk: validate metadata when processing requests

drivers/net/ethernet/intel/igc/igc_main.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +-
.../net/ethernet/mellanox/mlx5/core/en/xdp.c | 15 ++--
.../net/ethernet/mellanox/mlx5/core/en/xdp.h | 4 +-
.../ethernet/mellanox/mlx5/core/en/xsk/tx.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +-
include/net/libeth/xsk.h | 2 +-
include/net/xdp_sock.h | 45 ++---------
include/net/xdp_sock_drv.h | 77 ++++++++++++++++---
net/xdp/xdp_umem.c | 2 +
net/xdp/xsk.c | 11 ++-
net/xdp/xsk_buff_pool.c | 6 +-
12 files changed, 101 insertions(+), 71 deletions(-)

--
2.53.0-Meta