* [rogerq:b4/am65-cpsw-xdp-fixes 2/4] drivers/net/ethernet/ti/am65-cpsw-nuss.c:1331:15: warning: variable 'skb' is uninitialized when used here
@ 2025-02-08 16:37 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-02-08 16:37 UTC (permalink / raw)
To: Roger Quadros; +Cc: llvm, oe-kbuild-all, Roger Quadros
tree: https://github.com/rogerq/linux b4/am65-cpsw-xdp-fixes
head: 414121e93990e4e8425ecd9e834b2a99dfffa9d5
commit: a949c33d5bf38077bf26b4e66d9d9832c3e6668c [2/4] net: ethernet: ti: am65-cpsw: fix memleak in certain XDP cases
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20250209/202502090051.nrnZ1Q3T-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250209/202502090051.nrnZ1Q3T-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502090051.nrnZ1Q3T-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/net/ethernet/ti/am65-cpsw-nuss.c:761:9: warning: cast to smaller integer type 'enum am65_cpsw_tx_buf_type' from 'void *' [-Wvoid-pointer-to-enum-cast]
761 | return (enum am65_cpsw_tx_buf_type)k3_cppi_desc_pool_desc_info(tx_chn->desc_pool,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
762 | desc_idx);
| ~~~~~~~~~
>> drivers/net/ethernet/ti/am65-cpsw-nuss.c:1331:15: warning: variable 'skb' is uninitialized when used here [-Wuninitialized]
1331 | skb_reserve(skb, headroom);
| ^~~
drivers/net/ethernet/ti/am65-cpsw-nuss.c:1278:21: note: initialize the variable 'skb' to silence this warning
1278 | struct sk_buff *skb;
| ^
| = NULL
2 warnings generated.
vim +/skb +1331 drivers/net/ethernet/ti/am65-cpsw-nuss.c
93a76530316a3d Grygorii Strashko 2020-03-24 1262
da70d184a8c330 Roger Quadros 2024-09-10 1263 static int am65_cpsw_nuss_rx_packets(struct am65_cpsw_rx_flow *flow,
da70d184a8c330 Roger Quadros 2024-09-10 1264 int cpu, int *xdp_state)
93a76530316a3d Grygorii Strashko 2020-03-24 1265 {
da70d184a8c330 Roger Quadros 2024-09-10 1266 struct am65_cpsw_rx_chn *rx_chn = &flow->common->rx_chns;
93a76530316a3d Grygorii Strashko 2020-03-24 1267 u32 buf_dma_len, pkt_len, port_id = 0, csum_info;
da70d184a8c330 Roger Quadros 2024-09-10 1268 struct am65_cpsw_common *common = flow->common;
93a76530316a3d Grygorii Strashko 2020-03-24 1269 struct am65_cpsw_ndev_priv *ndev_priv;
93a76530316a3d Grygorii Strashko 2020-03-24 1270 struct cppi5_host_desc_t *desc_rx;
93a76530316a3d Grygorii Strashko 2020-03-24 1271 struct device *dev = common->dev;
de794169cf1711 Roger Quadros 2024-11-01 1272 struct am65_cpsw_swdata *swdata;
8acacc40f73375 Julien Panis 2024-04-12 1273 struct page *page, *new_page;
93a76530316a3d Grygorii Strashko 2020-03-24 1274 dma_addr_t desc_dma, buf_dma;
93a76530316a3d Grygorii Strashko 2020-03-24 1275 struct am65_cpsw_port *port;
93a76530316a3d Grygorii Strashko 2020-03-24 1276 struct net_device *ndev;
da70d184a8c330 Roger Quadros 2024-09-10 1277 u32 flow_idx = flow->id;
8acacc40f73375 Julien Panis 2024-04-12 1278 struct sk_buff *skb;
8acacc40f73375 Julien Panis 2024-04-12 1279 struct xdp_buff xdp;
de794169cf1711 Roger Quadros 2024-11-01 1280 int headroom, ret;
8acacc40f73375 Julien Panis 2024-04-12 1281 void *page_addr;
93a76530316a3d Grygorii Strashko 2020-03-24 1282 u32 *psdata;
93a76530316a3d Grygorii Strashko 2020-03-24 1283
5e24db550bd6f4 Roger Quadros 2024-08-29 1284 *xdp_state = AM65_CPSW_XDP_PASS;
93a76530316a3d Grygorii Strashko 2020-03-24 1285 ret = k3_udma_glue_pop_rx_chn(rx_chn->rx_chn, flow_idx, &desc_dma);
93a76530316a3d Grygorii Strashko 2020-03-24 1286 if (ret) {
93a76530316a3d Grygorii Strashko 2020-03-24 1287 if (ret != -ENODATA)
93a76530316a3d Grygorii Strashko 2020-03-24 1288 dev_err(dev, "RX: pop chn fail %d\n", ret);
93a76530316a3d Grygorii Strashko 2020-03-24 1289 return ret;
93a76530316a3d Grygorii Strashko 2020-03-24 1290 }
93a76530316a3d Grygorii Strashko 2020-03-24 1291
6a40e2890e6e1d Grygorii Strashko 2020-10-30 1292 if (cppi5_desc_is_tdcm(desc_dma)) {
93a76530316a3d Grygorii Strashko 2020-03-24 1293 dev_dbg(dev, "%s RX tdown flow: %u\n", __func__, flow_idx);
0ed577e7e8e508 Siddharth Vadapalli 2023-02-09 1294 if (common->pdata.quirks & AM64_CPSW_QUIRK_DMA_RX_TDOWN_IRQ)
0ed577e7e8e508 Siddharth Vadapalli 2023-02-09 1295 complete(&common->tdown_complete);
93a76530316a3d Grygorii Strashko 2020-03-24 1296 return 0;
93a76530316a3d Grygorii Strashko 2020-03-24 1297 }
93a76530316a3d Grygorii Strashko 2020-03-24 1298
93a76530316a3d Grygorii Strashko 2020-03-24 1299 desc_rx = k3_cppi_desc_pool_dma2virt(rx_chn->desc_pool, desc_dma);
93a76530316a3d Grygorii Strashko 2020-03-24 1300 dev_dbg(dev, "%s flow_idx: %u desc %pad\n",
93a76530316a3d Grygorii Strashko 2020-03-24 1301 __func__, flow_idx, &desc_dma);
93a76530316a3d Grygorii Strashko 2020-03-24 1302
93a76530316a3d Grygorii Strashko 2020-03-24 1303 swdata = cppi5_hdesc_get_swdata(desc_rx);
de794169cf1711 Roger Quadros 2024-11-01 1304 page = swdata->page;
de794169cf1711 Roger Quadros 2024-11-01 1305 page_addr = page_address(page);
93a76530316a3d Grygorii Strashko 2020-03-24 1306 cppi5_hdesc_get_obuf(desc_rx, &buf_dma, &buf_dma_len);
39fd0547ee6666 Peter Ujfalusi 2021-01-15 1307 k3_udma_glue_rx_cppi5_to_dma_addr(rx_chn->rx_chn, &buf_dma);
93a76530316a3d Grygorii Strashko 2020-03-24 1308 pkt_len = cppi5_hdesc_get_pktlen(desc_rx);
93a76530316a3d Grygorii Strashko 2020-03-24 1309 cppi5_desc_get_tags_ids(&desc_rx->hdr, &port_id, NULL);
93a76530316a3d Grygorii Strashko 2020-03-24 1310 dev_dbg(dev, "%s rx port_id:%d\n", __func__, port_id);
93a76530316a3d Grygorii Strashko 2020-03-24 1311 port = am65_common_get_port(common, port_id);
93a76530316a3d Grygorii Strashko 2020-03-24 1312 ndev = port->ndev;
93a76530316a3d Grygorii Strashko 2020-03-24 1313 psdata = cppi5_hdesc_get_psdata(desc_rx);
93a76530316a3d Grygorii Strashko 2020-03-24 1314 csum_info = psdata[2];
93a76530316a3d Grygorii Strashko 2020-03-24 1315 dev_dbg(dev, "%s rx csum_info:%#x\n", __func__, csum_info);
93a76530316a3d Grygorii Strashko 2020-03-24 1316
ed569ed9b30a74 Peter Ujfalusi 2021-01-15 1317 dma_unmap_single(rx_chn->dma_dev, buf_dma, buf_dma_len, DMA_FROM_DEVICE);
93a76530316a3d Grygorii Strashko 2020-03-24 1318 k3_cppi_desc_pool_free(rx_chn->desc_pool, desc_rx);
93a76530316a3d Grygorii Strashko 2020-03-24 1319
8acacc40f73375 Julien Panis 2024-04-12 1320 if (port->xdp_prog) {
da70d184a8c330 Roger Quadros 2024-09-10 1321 xdp_init_buff(&xdp, PAGE_SIZE, &port->xdp_rxq[flow->id]);
5e24db550bd6f4 Roger Quadros 2024-08-29 1322 xdp_prepare_buff(&xdp, page_addr, AM65_CPSW_HEADROOM,
8acacc40f73375 Julien Panis 2024-04-12 1323 pkt_len, false);
de794169cf1711 Roger Quadros 2024-11-01 1324 *xdp_state = am65_cpsw_run_xdp(flow, port, &xdp,
8acacc40f73375 Julien Panis 2024-04-12 1325 cpu, &pkt_len);
5e24db550bd6f4 Roger Quadros 2024-08-29 1326 if (*xdp_state != AM65_CPSW_XDP_PASS)
5e24db550bd6f4 Roger Quadros 2024-08-29 1327 goto allocate;
8acacc40f73375 Julien Panis 2024-04-12 1328
8acacc40f73375 Julien Panis 2024-04-12 1329 /* Compute additional headroom to be reserved */
8acacc40f73375 Julien Panis 2024-04-12 1330 headroom = (xdp.data - xdp.data_hard_start) - skb_headroom(skb);
8acacc40f73375 Julien Panis 2024-04-12 @1331 skb_reserve(skb, headroom);
8acacc40f73375 Julien Panis 2024-04-12 1332 }
8acacc40f73375 Julien Panis 2024-04-12 1333
a949c33d5bf380 Roger Quadros 2025-02-05 1334 skb = am65_cpsw_build_skb(page_addr, ndev,
a949c33d5bf380 Roger Quadros 2025-02-05 1335 AM65_CPSW_MAX_PACKET_SIZE);
a949c33d5bf380 Roger Quadros 2025-02-05 1336 if (unlikely(!skb)) {
a949c33d5bf380 Roger Quadros 2025-02-05 1337 new_page = page;
a949c33d5bf380 Roger Quadros 2025-02-05 1338 goto requeue;
a949c33d5bf380 Roger Quadros 2025-02-05 1339 }
a949c33d5bf380 Roger Quadros 2025-02-05 1340
86e8b070b25e3c Vignesh Raghavendra 2021-02-11 1341 ndev_priv = netdev_priv(ndev);
86e8b070b25e3c Vignesh Raghavendra 2021-02-11 1342 am65_cpsw_nuss_set_offload_fwd_mark(skb, ndev_priv->offload_fwd_mark);
93a76530316a3d Grygorii Strashko 2020-03-24 1343 skb_put(skb, pkt_len);
c03a6fd398269e Chintan Vankar 2024-04-19 1344 if (port->rx_ts_enabled)
c03a6fd398269e Chintan Vankar 2024-04-19 1345 am65_cpts_rx_timestamp(common->cpts, skb);
8acacc40f73375 Julien Panis 2024-04-12 1346 skb_mark_for_recycle(skb);
93a76530316a3d Grygorii Strashko 2020-03-24 1347 skb->protocol = eth_type_trans(skb, ndev);
93a76530316a3d Grygorii Strashko 2020-03-24 1348 am65_cpsw_nuss_rx_csum(skb, csum_info);
da70d184a8c330 Roger Quadros 2024-09-10 1349 napi_gro_receive(&flow->napi_rx, skb);
93a76530316a3d Grygorii Strashko 2020-03-24 1350
4a7b2ba94a59d1 Simon Horman 2024-10-10 1351 dev_sw_netstats_rx_add(ndev, pkt_len);
8acacc40f73375 Julien Panis 2024-04-12 1352
5e24db550bd6f4 Roger Quadros 2024-08-29 1353 allocate:
da70d184a8c330 Roger Quadros 2024-09-10 1354 new_page = page_pool_dev_alloc_pages(flow->page_pool);
5e24db550bd6f4 Roger Quadros 2024-08-29 1355 if (unlikely(!new_page)) {
5e24db550bd6f4 Roger Quadros 2024-08-29 1356 dev_err(dev, "page alloc failed\n");
8acacc40f73375 Julien Panis 2024-04-12 1357 return -ENOMEM;
5e24db550bd6f4 Roger Quadros 2024-08-29 1358 }
5e24db550bd6f4 Roger Quadros 2024-08-29 1359
93a76530316a3d Grygorii Strashko 2020-03-24 1360 if (netif_dormant(ndev)) {
de794169cf1711 Roger Quadros 2024-11-01 1361 am65_cpsw_put_page(flow, new_page, true);
93a76530316a3d Grygorii Strashko 2020-03-24 1362 ndev->stats.rx_dropped++;
93a76530316a3d Grygorii Strashko 2020-03-24 1363 return 0;
93a76530316a3d Grygorii Strashko 2020-03-24 1364 }
93a76530316a3d Grygorii Strashko 2020-03-24 1365
8acacc40f73375 Julien Panis 2024-04-12 1366 requeue:
da70d184a8c330 Roger Quadros 2024-09-10 1367 ret = am65_cpsw_nuss_rx_push(common, new_page, flow_idx);
93a76530316a3d Grygorii Strashko 2020-03-24 1368 if (WARN_ON(ret < 0)) {
de794169cf1711 Roger Quadros 2024-11-01 1369 am65_cpsw_put_page(flow, new_page, true);
93a76530316a3d Grygorii Strashko 2020-03-24 1370 ndev->stats.rx_errors++;
93a76530316a3d Grygorii Strashko 2020-03-24 1371 ndev->stats.rx_dropped++;
93a76530316a3d Grygorii Strashko 2020-03-24 1372 }
93a76530316a3d Grygorii Strashko 2020-03-24 1373
93a76530316a3d Grygorii Strashko 2020-03-24 1374 return ret;
93a76530316a3d Grygorii Strashko 2020-03-24 1375 }
93a76530316a3d Grygorii Strashko 2020-03-24 1376
:::::: The code at line 1331 was first introduced by commit
:::::: 8acacc40f7337527ff84cd901ed2ef0a2b95b2b6 net: ethernet: ti: am65-cpsw: Add minimal XDP support
:::::: TO: Julien Panis <jpanis@baylibre.com>
:::::: CC: David S. Miller <davem@davemloft.net>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-02-08 16:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-08 16:37 [rogerq:b4/am65-cpsw-xdp-fixes 2/4] drivers/net/ethernet/ti/am65-cpsw-nuss.c:1331:15: warning: variable 'skb' is uninitialized when used here kernel test robot
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.