* [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval
@ 2025-08-26 18:05 Abin Joseph
2025-08-26 18:06 ` kernel test robot
2025-08-28 1:16 ` Jakub Kicinski
0 siblings, 2 replies; 3+ messages in thread
From: Abin Joseph @ 2025-08-26 18:05 UTC (permalink / raw)
To: radhey.shyam.pandey, andrew+netdev, davem, edumazet, kuba, pabeni,
michal.simek
Cc: git, abin.joseph, netdev, linux-arm-kernel, linux-kernel, stable
Add proper error checking for dmaengine_desc_get_metadata_ptr() which
can return an error pointer and lead to potential crashes or undefined
behaviour if the pointer retrieval fails.
Properly handle the error by unmapping DMA buffer, freeing the skb and
returning early to prevent further processing with invalid data.
Fixes: 6a91b846af85 ("net: axienet: Introduce dmaengine support")
Signed-off-by: Abin Joseph <abin.joseph@amd.com>
---
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 0d8a05fe541a..1729fd21d83b 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -1166,8 +1166,17 @@ static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *result)
skb = skbuf_dma->skb;
app_metadata = dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_len,
&meta_max_len);
- dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size,
- DMA_FROM_DEVICE);
+
+ dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size, DMA_FROM_DEVICE);
+
+ if (IS_ERR(app_metadata)) {
+ if (net_ratelimit())
+ netdev_err(lp->ndev, "Failed to get RX metadata pointer\n");
+ dev_kfree_skb_any(skb);
+ lp->ndev->stats.rx_dropped++;
+ goto rx_submit;
+ }
+
/* TODO: Derive app word index programmatically */
rx_len = (app_metadata[LEN_APP] & 0xFFFF);
skb_put(skb, rx_len);
@@ -1180,6 +1189,7 @@ static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *result)
u64_stats_add(&lp->rx_bytes, rx_len);
u64_stats_update_end(&lp->rx_stat_sync);
+rx_submit:
for (i = 0; i < CIRC_SPACE(lp->rx_ring_head, lp->rx_ring_tail,
RX_BUF_NUM_DEFAULT); i++)
axienet_rx_submit_desc(lp->ndev);
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval
2025-08-26 18:05 [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval Abin Joseph
@ 2025-08-26 18:06 ` kernel test robot
2025-08-28 1:16 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2025-08-26 18:06 UTC (permalink / raw)
To: Abin Joseph; +Cc: stable, oe-kbuild-all
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html#option-1
Rule: add the tag "Cc: stable@vger.kernel.org" in the sign-off area to have the patch automatically included in the stable tree.
Subject: [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval
Link: https://lore.kernel.org/stable/20250826180549.2178147-1-abin.joseph%40amd.com
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval
2025-08-26 18:05 [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval Abin Joseph
2025-08-26 18:06 ` kernel test robot
@ 2025-08-28 1:16 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: Jakub Kicinski @ 2025-08-28 1:16 UTC (permalink / raw)
To: Abin Joseph
Cc: radhey.shyam.pandey, andrew+netdev, davem, edumazet, pabeni,
michal.simek, git, netdev, linux-arm-kernel, linux-kernel, stable
On Tue, 26 Aug 2025 23:35:49 +0530 Abin Joseph wrote:
> Subject: [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval
Sounds like a fix, please repost as [PATCH net], against the
netdev/net tree.
> Add proper error checking for dmaengine_desc_get_metadata_ptr() which
> can return an error pointer and lead to potential crashes or undefined
> behaviour if the pointer retrieval fails.
>
> Properly handle the error by unmapping DMA buffer, freeing the skb and
> returning early to prevent further processing with invalid data.
>
> Fixes: 6a91b846af85 ("net: axienet: Introduce dmaengine support")
> Signed-off-by: Abin Joseph <abin.joseph@amd.com>
> ---
> drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> index 0d8a05fe541a..1729fd21d83b 100644
> --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> @@ -1166,8 +1166,17 @@ static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *result)
> skb = skbuf_dma->skb;
> app_metadata = dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_len,
> &meta_max_len);
> - dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size,
> - DMA_FROM_DEVICE);
> +
> + dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size, DMA_FROM_DEVICE);
80 char width is still strongly preferred, at least in networking.
So please don't unwrap this line for no apparent reason :\
> + if (IS_ERR(app_metadata)) {
--
pw-bot: cr
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-28 1:16 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-26 18:05 [PATCH net-next] net: xilinx: axienet: Add error handling for RX metadata pointer retrieval Abin Joseph
2025-08-26 18:06 ` kernel test robot
2025-08-28 1:16 ` Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).