xsk: add missing virtual address conversion for page
authorBui Quang Minh <minhquangbui99@gmail.com>
Thu, 22 May 2025 04:01:15 +0000 (11:01 +0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 27 May 2025 09:46:47 +0000 (11:46 +0200)
In commit 7ead4405e06f ("xsk: convert xdp_copy_frags_from_zc() to use
page_pool_dev_alloc()"), when converting from netmem to page, I missed a
call to page_address() around skb_frag_page(frag) to get the virtual
address of the page. This commit uses skb_frag_address() helper to fix
the issue.

Fixes: 7ead4405e06f ("xsk: convert xdp_copy_frags_from_zc() to use page_pool_dev_alloc()")
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Signed-off-by: Bui Quang Minh <minhquangbui99@gmail.com>
Link: https://patch.msgid.link/20250522040115.5057-1-minhquangbui99@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/core/xdp.c

index e6f22ba61c1ea9479ef6ecb36c16f74a88785c8f..491334b9b8beca9d99b9834d2b614ca8aa14c9ac 100644 (file)
@@ -709,8 +709,7 @@ static noinline bool xdp_copy_frags_from_zc(struct sk_buff *skb,
                        return false;
                }
 
-               memcpy(page_address(page) + offset,
-                      skb_frag_page(frag) + skb_frag_off(frag),
+               memcpy(page_address(page) + offset, skb_frag_address(frag),
                       LARGEST_ALIGN(len));
                __skb_fill_page_desc_noacc(sinfo, i, page, offset, len);