[PATCH net 1/6] xsk: require at least 16 bytes of TX metadata
From: Stanislav Fomichev
Date: Mon Jul 27 2026 - 12:43:35 EST
AF_XDP accepts a TX metadata length as small as eight bytes, but every
supported request needs the flags plus at least one eight-byte request
field. Such short metadata also lets the kernel read beyond the registered
area.
Require 16 bytes rather than sizeof(struct xsk_tx_metadata) to preserve
compatibility with applications that do not use launch-time metadata.
Fixes: 341ac980eab9 ("xsk: Support tx_metadata_len")
Reported-by: AutonomousCodeSecurity@xxxxxxxxxxxxx
Reported-by: Cen Zhang (Microsoft) <blbllhy@xxxxxxxxx>
Link: https://lore.kernel.org/netdev/20260720155210.34229-1-blbllhy@xxxxxxxxx/
Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxxx>
---
net/xdp/xdp_umem.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c
index 58da2f4f4397..cd8643360eb3 100644
--- a/net/xdp/xdp_umem.c
+++ b/net/xdp/xdp_umem.c
@@ -210,6 +210,8 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr)
if (mr->flags & XDP_UMEM_TX_METADATA_LEN) {
if (mr->tx_metadata_len >= 256 || mr->tx_metadata_len % 8)
return -EINVAL;
+ if (mr->tx_metadata_len < 16)
+ return -EINVAL;
umem->tx_metadata_len = mr->tx_metadata_len;
}
--
2.53.0-Meta