* [bug report] net: axienet: Introduce dmaengine support
@ 2023-11-27 12:57 Dan Carpenter
2023-11-29 14:46 ` Pandey, Radhey Shyam
0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2023-11-27 12:57 UTC (permalink / raw)
To: radhey.shyam.pandey; +Cc: kernel-janitors
Hello Radhey Shyam Pandey,
The patch 6a91b846af85: "net: axienet: Introduce dmaengine support"
from Nov 16, 2023 (linux-next), leads to the following Smatch static
checker warning:
drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1060 axienet_dma_rx_cb()
error: 'app_metadata' dereferencing possible ERR_PTR()
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
1045 static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *result)
1046 {
1047 struct skbuf_dma_descriptor *skbuf_dma;
1048 size_t meta_len, meta_max_len, rx_len;
1049 struct axienet_local *lp = data;
1050 struct sk_buff *skb;
1051 u32 *app_metadata;
1052
1053 skbuf_dma = axienet_get_rx_desc(lp, lp->rx_ring_tail++);
1054 skb = skbuf_dma->skb;
1055 app_metadata = dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_len,
1056 &meta_max_len);
dmaengine_desc_get_metadata_ptr() can return error pointers
1057 dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size,
1058 DMA_FROM_DEVICE);
1059 /* TODO: Derive app word index programmatically */
--> 1060 rx_len = (app_metadata[LEN_APP] & 0xFFFF);
^^^^^^^^^^^^
1061 skb_put(skb, rx_len);
1062 skb->protocol = eth_type_trans(skb, lp->ndev);
1063 skb->ip_summed = CHECKSUM_NONE;
1064
1065 __netif_rx(skb);
1066 u64_stats_update_begin(&lp->rx_stat_sync);
1067 u64_stats_add(&lp->rx_packets, 1);
1068 u64_stats_add(&lp->rx_bytes, rx_len);
1069 u64_stats_update_end(&lp->rx_stat_sync);
1070 axienet_rx_submit_desc(lp->ndev);
1071 dma_async_issue_pending(lp->rx_chan);
1072 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [bug report] net: axienet: Introduce dmaengine support
2023-11-27 12:57 Dan Carpenter
@ 2023-11-29 14:46 ` Pandey, Radhey Shyam
0 siblings, 0 replies; 4+ messages in thread
From: Pandey, Radhey Shyam @ 2023-11-29 14:46 UTC (permalink / raw)
To: Dan Carpenter; +Cc: kernel-janitors@vger.kernel.org
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@linaro.org>
> Sent: Monday, November 27, 2023 6:28 PM
> To: Pandey, Radhey Shyam <radhey.shyam.pandey@amd.com>
> Cc: kernel-janitors@vger.kernel.org
> Subject: [bug report] net: axienet: Introduce dmaengine support
>
> Hello Radhey Shyam Pandey,
>
> The patch 6a91b846af85: "net: axienet: Introduce dmaengine support"
> from Nov 16, 2023 (linux-next), leads to the following Smatch static checker
> warning:
>
> drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1060
> axienet_dma_rx_cb()
> error: 'app_metadata' dereferencing possible ERR_PTR()
>
> drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> 1045 static void axienet_dma_rx_cb(void *data, const struct
> dmaengine_result *result)
> 1046 {
> 1047 struct skbuf_dma_descriptor *skbuf_dma;
> 1048 size_t meta_len, meta_max_len, rx_len;
> 1049 struct axienet_local *lp = data;
> 1050 struct sk_buff *skb;
> 1051 u32 *app_metadata;
> 1052
> 1053 skbuf_dma = axienet_get_rx_desc(lp, lp->rx_ring_tail++);
> 1054 skb = skbuf_dma->skb;
> 1055 app_metadata =
> dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_len,
> 1056 &meta_max_len);
>
> dmaengine_desc_get_metadata_ptr() can return error pointers
I will send out a patch to fix and add error handling for
dmaengine_desc_get_metadata_ptr().
>
> 1057 dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp-
> >max_frm_size,
> 1058 DMA_FROM_DEVICE);
> 1059 /* TODO: Derive app word index programmatically */
> --> 1060 rx_len = (app_metadata[LEN_APP] & 0xFFFF);
> ^^^^^^^^^^^^
>
> 1061 skb_put(skb, rx_len);
> 1062 skb->protocol = eth_type_trans(skb, lp->ndev);
> 1063 skb->ip_summed = CHECKSUM_NONE;
> 1064
> 1065 __netif_rx(skb);
> 1066 u64_stats_update_begin(&lp->rx_stat_sync);
> 1067 u64_stats_add(&lp->rx_packets, 1);
> 1068 u64_stats_add(&lp->rx_bytes, rx_len);
> 1069 u64_stats_update_end(&lp->rx_stat_sync);
> 1070 axienet_rx_submit_desc(lp->ndev);
> 1071 dma_async_issue_pending(lp->rx_chan);
> 1072 }
>
> regards,
> dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug report] net: axienet: Introduce dmaengine support
@ 2025-08-07 15:59 Dan Carpenter
2025-08-12 15:05 ` Pandey, Radhey Shyam
0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2025-08-07 15:59 UTC (permalink / raw)
To: Radhey Shyam Pandey; +Cc: kernel-janitors
Hello Radhey Shyam Pandey,
Commit 6a91b846af85 ("net: axienet: Introduce dmaengine support")
from Nov 16, 2023 (linux-next), leads to the following Smatch static
checker warning:
drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1171 axienet_dma_rx_cb()
error: 'app_metadata' dereferencing possible ERR_PTR()
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
1156 static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *result)
1157 {
1158 struct skbuf_dma_descriptor *skbuf_dma;
1159 size_t meta_len, meta_max_len, rx_len;
1160 struct axienet_local *lp = data;
1161 struct sk_buff *skb;
1162 u32 *app_metadata;
1163
1164 skbuf_dma = axienet_get_rx_desc(lp, lp->rx_ring_tail++);
1165 skb = skbuf_dma->skb;
1166 app_metadata = dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_len,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No error checking.
1167 &meta_max_len);
1168 dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size,
1169 DMA_FROM_DEVICE);
1170 /* TODO: Derive app word index programmatically */
--> 1171 rx_len = (app_metadata[LEN_APP] & 0xFFFF);
^^^^^^^^^^^^
Dereference.
1172 skb_put(skb, rx_len);
1173 skb->protocol = eth_type_trans(skb, lp->ndev);
1174 skb->ip_summed = CHECKSUM_NONE;
1175
1176 __netif_rx(skb);
1177 u64_stats_update_begin(&lp->rx_stat_sync);
1178 u64_stats_add(&lp->rx_packets, 1);
1179 u64_stats_add(&lp->rx_bytes, rx_len);
1180 u64_stats_update_end(&lp->rx_stat_sync);
1181 axienet_rx_submit_desc(lp->ndev);
1182 dma_async_issue_pending(lp->rx_chan);
1183 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [bug report] net: axienet: Introduce dmaengine support
2025-08-07 15:59 [bug report] net: axienet: Introduce dmaengine support Dan Carpenter
@ 2025-08-12 15:05 ` Pandey, Radhey Shyam
0 siblings, 0 replies; 4+ messages in thread
From: Pandey, Radhey Shyam @ 2025-08-12 15:05 UTC (permalink / raw)
To: Dan Carpenter; +Cc: kernel-janitors@vger.kernel.org, Gupta, Suraj
[AMD Official Use Only - AMD Internal Distribution Only]
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@linaro.org>
> Sent: Thursday, August 7, 2025 9:30 PM
> To: Pandey, Radhey Shyam <radhey.shyam.pandey@amd.com>
> Cc: kernel-janitors@vger.kernel.org
> Subject: [bug report] net: axienet: Introduce dmaengine support
>
> Hello Radhey Shyam Pandey,
>
> Commit 6a91b846af85 ("net: axienet: Introduce dmaengine support") from Nov 16,
> 2023 (linux-next), leads to the following Smatch static checker warning:
>
> drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1171 axienet_dma_rx_cb()
> error: 'app_metadata' dereferencing possible ERR_PTR()
>
> drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> 1156 static void axienet_dma_rx_cb(void *data, const struct dmaengine_result
> *result)
> 1157 {
> 1158 struct skbuf_dma_descriptor *skbuf_dma;
> 1159 size_t meta_len, meta_max_len, rx_len;
> 1160 struct axienet_local *lp = data;
> 1161 struct sk_buff *skb;
> 1162 u32 *app_metadata;
> 1163
> 1164 skbuf_dma = axienet_get_rx_desc(lp, lp->rx_ring_tail++);
> 1165 skb = skbuf_dma->skb;
> 1166 app_metadata = dmaengine_desc_get_metadata_ptr(skbuf_dma-
> >desc, &meta_len,
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> No error checking.
>
> 1167 &meta_max_len);
> 1168 dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp-
> >max_frm_size,
> 1169 DMA_FROM_DEVICE);
> 1170 /* TODO: Derive app word index programmatically */
> --> 1171 rx_len = (app_metadata[LEN_APP] & 0xFFFF);
> ^^^^^^^^^^^^
> Dereference.
>
> 1172 skb_put(skb, rx_len);
> 1173 skb->protocol = eth_type_trans(skb, lp->ndev);
> 1174 skb->ip_summed = CHECKSUM_NONE;
> 1175
> 1176 __netif_rx(skb);
> 1177 u64_stats_update_begin(&lp->rx_stat_sync);
> 1178 u64_stats_add(&lp->rx_packets, 1);
> 1179 u64_stats_add(&lp->rx_bytes, rx_len);
> 1180 u64_stats_update_end(&lp->rx_stat_sync);
> 1181 axienet_rx_submit_desc(lp->ndev);
> 1182 dma_async_issue_pending(lp->rx_chan);
> 1183 }
>
Thanks. I acknowledge it and Suraj (added in CC)
will send out fix for it.
-Radhey
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-08-12 15:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-07 15:59 [bug report] net: axienet: Introduce dmaengine support Dan Carpenter
2025-08-12 15:05 ` Pandey, Radhey Shyam
-- strict thread matches above, loose matches on Subject: below --
2023-11-27 12:57 Dan Carpenter
2023-11-29 14:46 ` Pandey, Radhey Shyam
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.