]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xsk: fix XDP_UMEM_SG_FLAG issues
authorMaciej Fijalkowski <maciej.fijalkowski@intel.com>
Thu, 2 Apr 2026 15:49:53 +0000 (17:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Apr 2026 11:30:39 +0000 (13:30 +0200)
[ Upstream commit 93e84fe45b752d17a5a46b306ed78f0133bbc719 ]

Currently xp_assign_dev_shared() is missing XDP_USE_SG being propagated
to flags so set it in order to preserve mtu check that is supposed to be
done only when no multi-buffer setup is in picture.

Also, this flag has the same value as XDP_UMEM_TX_SW_CSUM so we could
get unexpected SG setups for software Tx checksums. Since csum flag is
UAPI, modify value of XDP_UMEM_SG_FLAG.

Fixes: d609f3d228a8 ("xsk: add multi-buffer support for sockets sharing umem")
Reviewed-by: Björn Töpel <bjorn@kernel.org>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://patch.msgid.link/20260402154958.562179-4-maciej.fijalkowski@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/net/xdp_sock.h
net/xdp/xsk_buff_pool.c

index 23e8861e8b25e673c2fb0f6b6629d2bff7fd2bcb..ebac60a3d8a17b418f2bc17dbdf8820c827198bc 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/mm.h>
 #include <net/sock.h>
 
-#define XDP_UMEM_SG_FLAG (1 << 1)
+#define XDP_UMEM_SG_FLAG BIT(3)
 
 struct net_device;
 struct xsk_queue;
index 51526034c42acb9a45b69133da430c0f72227831..6799ab6672f3e0d8b065d971a3f58fb1d27bbee4 100644 (file)
@@ -252,6 +252,10 @@ int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs,
                return -EINVAL;
 
        flags = umem->zc ? XDP_ZEROCOPY : XDP_COPY;
+
+       if (umem->flags & XDP_UMEM_SG_FLAG)
+               flags |= XDP_USE_SG;
+
        if (umem_xs->pool->uses_need_wakeup)
                flags |= XDP_USE_NEED_WAKEUP;