[linux-next:master 9403/12137] drivers/net/ethernet/airoha/airoha_eth.c:3470:25: sparse: sparse: division by zero
kernel test robot <[email protected]> Tue, 04 Aug 2026 09:08:18 +0800
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <[email protected]> |
:::::: :::::: Manual check reason: "low confidence static check warning: drivers/net/ethernet/airoha/airoha_eth.c:3470:25: sparse: sparse: division by zero" :::::: BCC: [email protected] CC: [email protected] TO: Lorenzo Bianconi <[email protected]> CC: Paolo Abeni <[email protected]> CC: Alexander Lobakin <[email protected]> CC: Simon Horman <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 9a4cdc958dd79fc6c3b20b51a10debec6ca09fec commit: 78a35725e533eef0afe83f6f96cffd69be9eaac7 [9403/12137] net: airoha: defer GDM3/GDM4 WAN mode and GDM2 loopback to QoS offload :::::: branch date: 8 hours ago :::::: commit date: 5 days ago config: arm-randconfig-r121-20260803 (https://download.01.org/0day-ci/archive/20260804/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 15.2.0 sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260804/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ sparse warnings: (new ones prefixed by >>) drivers/net/ethernet/airoha/airoha_eth.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/linux/phy.h, include/linux/of_net.h): include/linux/skbuff.h:2904:28: sparse: sparse: unsigned value that used to be signed checked against zero? include/linux/skbuff.h:2904:28: sparse: signed value source include/linux/skbuff.h:2904:28: sparse: sparse: unsigned value that used to be signed checked against zero? include/linux/skbuff.h:2904:28: sparse: signed value source >> drivers/net/ethernet/airoha/airoha_eth.c:3470:25: sparse: sparse: division by zero vim +3470 drivers/net/ethernet/airoha/airoha_eth.c 09bccf56db36501 Lorenzo Bianconi 2025-04-01 3411 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3412 static int airoha_alloc_gdm_device(struct airoha_eth *eth, ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3413 struct airoha_gdm_port *port, a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3414 int nbq, struct device_node *np) ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3415 { ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3416 struct net_device *netdev; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3417 struct airoha_gdm_dev *dev; 78a35725e533eef Lorenzo Bianconi 2026-07-25 3418 int err, i; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3419 u8 index; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3420 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3421 netdev = devm_alloc_etherdev_mqs(eth->dev, sizeof(*dev), ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3422 AIROHA_NUM_NETDEV_TX_RINGS, ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3423 AIROHA_NUM_RX_RING); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3424 if (!netdev) { ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3425 dev_err(eth->dev, "alloc_etherdev failed\n"); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3426 return -ENOMEM; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3427 } ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3428 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3429 netdev->netdev_ops = &airoha_netdev_ops; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3430 netdev->ethtool_ops = &airoha_ethtool_ops; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3431 netdev->max_mtu = AIROHA_MAX_MTU; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3432 netdev->watchdog_timeo = 5 * HZ; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3433 netdev->hw_features = NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_TSO6 | ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3434 NETIF_F_IPV6_CSUM | NETIF_F_SG | NETIF_F_TSO | ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3435 NETIF_F_HW_TC; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3436 netdev->features |= netdev->hw_features; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3437 netdev->vlan_features = netdev->hw_features; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3438 SET_NETDEV_DEV(netdev, eth->dev); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3439 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3440 /* reserve hw queues for HTB offloading */ ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3441 err = netif_set_real_num_tx_queues(netdev, AIROHA_NUM_TX_RING); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3442 if (err) ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3443 return err; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3444 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3445 err = of_get_ethdev_address(np, netdev); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3446 if (err) { ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3447 if (err == -EPROBE_DEFER) ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3448 return err; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3449 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3450 eth_hw_addr_random(netdev); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3451 dev_info(eth->dev, "generated random MAC address %pM\n", ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3452 netdev->dev_addr); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3453 } ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3454 a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3455 /* Allowed nbq for EN7581 on GDM3 port are 4 and 5 for PCIE0 a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3456 * and PCIE1 respectively. a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3457 */ a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3458 index = nbq; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3459 if (index && airoha_is_7581(eth) && port->id == AIROHA_GDM3_IDX) a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3460 index -= 4; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3461 a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3462 if (index >= ARRAY_SIZE(port->devs) || port->devs[index]) { a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3463 dev_err(eth->dev, "invalid nbq id: %d\n", nbq); a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3464 return -EINVAL; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3465 } a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3466 a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3467 netdev->dev.of_node = of_node_get(np); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3468 dev = netdev_priv(netdev); 8f4695fb67b259b Lorenzo Bianconi 2026-06-11 3469 u64_stats_init(&dev->stats.syncp); 78a35725e533eef Lorenzo Bianconi 2026-07-25 @3470 for (i = 0; i < ARRAY_SIZE(dev->txq_lock); i++) 78a35725e533eef Lorenzo Bianconi 2026-07-25 3471 spin_lock_init(&dev->txq_lock[i]); ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3472 dev->port = port; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3473 dev->eth = eth; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3474 dev->nbq = nbq; a9c2ca61fec7706 Lorenzo Bianconi 2026-06-03 3475 port->devs[index] = dev; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3476 ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3477 return 0; ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3478 } ec6c391bcca748b Lorenzo Bianconi 2026-05-27 3479 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki