[frank-w-bpi-r2-4.14:pr/187 1/1] drivers/net/dsa/mxl862xx/mxl862xx.c:4518:18: sparse: sparse: unsigned value that used to be signed checked against zero?

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
:::::: 
:::::: Manual check reason: "low confidence static check warning: drivers/net/dsa/mxl862xx/mxl862xx.c:4518:18: sparse: sparse: unsigned value that used to be signed checked against zero?"
:::::: 

BCC: [email protected]
CC: [email protected]
TO: Frank Wunderlich <[email protected]>

tree:   https://github.com/frank-w/BPI-R2-4.14 pr/187
head:   3591b14936035fc6eaa4ffb659d63289367e34d4
commit: 577f2ee0515d84bb0aa78dbe0d3b3b1fe4d2658d [1/1] net: dsa: mxl862xx: add ds-mux (WIP)
:::::: branch date: 4 days ago
:::::: commit date: 5 days ago
config: sparc64-randconfig-r121-20260702 (https://download.01.org/0day-ci/archive/20260702/[email protected]/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260702/[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/dsa/mxl862xx/mxl862xx.c:4518:18: sparse: sparse: unsigned value that used to be signed checked against zero?
   drivers/net/dsa/mxl862xx/mxl862xx.c: note: in included file (through include/linux/byteorder/big_endian.h, arch/sparc/include/uapi/asm/byteorder.h, include/linux/bitfield.h):
   include/uapi/linux/byteorder/big_endian.h:83:32: sparse: signed value source

vim +4518 drivers/net/dsa/mxl862xx/mxl862xx.c

577f2ee0515d84 Frank Wunderlich 2025-10-21  4503  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4504  static int ds_add_mux(struct mxl862xx_priv *priv, struct device_node *np)
577f2ee0515d84 Frank Wunderlich 2025-10-21  4505  {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4506  	const __be32 *_id = of_get_property(np, "reg", NULL);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4507  	struct device_node *child;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4508  	struct combo_port_mux *mux;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4509  	unsigned int id;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4510  	int err;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4511  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4512  	if (!_id) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4513  		dev_err(priv->ds->dev, "missing attach dp id\n");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4514  		return -EINVAL;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4515  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4516  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4517  	id = be32_to_cpup(_id);
577f2ee0515d84 Frank Wunderlich 2025-10-21 @4518  	if (id < 0 || id >= MXL862XX_MAX_PORTS) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4519  		dev_err(priv->ds->dev, "%d is not a valid attach dp id\n", id);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4520  		return -EINVAL;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4521  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4522  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4523  	mux = kmalloc(sizeof(struct combo_port_mux), GFP_KERNEL);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4524  	if (unlikely(!mux)) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4525  		dev_err(priv->ds->dev, "failed to create mux structure\n");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4526  		return -ENOMEM;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4527  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4528  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4529  	mux->mod_def0_gpio = fwnode_gpiod_get_index(of_fwnode_handle(np),
577f2ee0515d84 Frank Wunderlich 2025-10-21  4530  				"mod-def0", 0, GPIOD_IN |
577f2ee0515d84 Frank Wunderlich 2025-10-21  4531  				GPIOD_FLAGS_BIT_NONEXCLUSIVE, "?");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4532  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4533  	if (IS_ERR(mux->mod_def0_gpio)) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4534  		dev_err(priv->ds->dev, "failed to requset gpio for mod-def0\n");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4535  		err = PTR_ERR(mux->mod_def0_gpio);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4536  		goto err_free_mux;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4537  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4538  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4539  	mux->chan_sel_gpio = fwnode_gpiod_get_index(of_fwnode_handle(np),
577f2ee0515d84 Frank Wunderlich 2025-10-21  4540  				"chan-sel", 0, GPIOD_OUT_LOW, "?");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4541  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4542  	if (IS_ERR(mux->chan_sel_gpio)) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4543  		dev_err(priv->ds->dev, "failed to requset gpio for chan-sel\n");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4544  		err = PTR_ERR(mux->chan_sel_gpio);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4545  		goto err_put_mod_def0;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4546  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4547  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4548  	of_property_read_u32(np, "sfp-present-channel",
577f2ee0515d84 Frank Wunderlich 2025-10-21  4549  		&mux->sfp_present_channel);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4550  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4551  	priv->ds_mux[id] = mux;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4552  	mux->dp = dsa_to_port(priv->ds, id);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4553  	/* configure default channel to 10G PHY */
577f2ee0515d84 Frank Wunderlich 2025-10-21  4554  	mux->channel = !mux->sfp_present_channel;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4555  	mux->initialized = false;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4556  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4557  	for_each_child_of_node(np, child) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4558  		err = ds_add_mux_channel(mux, child);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4559  		if (err) {
577f2ee0515d84 Frank Wunderlich 2025-10-21  4560  			dev_err(priv->ds->dev, "failed to add ds_mux\n");
577f2ee0515d84 Frank Wunderlich 2025-10-21  4561  			of_node_put(child);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4562  			goto err_put_chan_sel;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4563  		}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4564  	}
577f2ee0515d84 Frank Wunderlich 2025-10-21  4565  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4566  	INIT_DELAYED_WORK(&mux->sfp_monitor_work, sfp_monitor_work_func);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4567  	mod_delayed_work(system_wq, &mux->sfp_monitor_work, msecs_to_jiffies(3000));
577f2ee0515d84 Frank Wunderlich 2025-10-21  4568  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4569  	return 0;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4570  
577f2ee0515d84 Frank Wunderlich 2025-10-21  4571  err_put_chan_sel:
577f2ee0515d84 Frank Wunderlich 2025-10-21  4572  	gpiod_put(mux->chan_sel_gpio);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4573  err_put_mod_def0:
577f2ee0515d84 Frank Wunderlich 2025-10-21  4574  	gpiod_put(mux->mod_def0_gpio);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4575  err_free_mux:
577f2ee0515d84 Frank Wunderlich 2025-10-21  4576  	kfree(mux);
577f2ee0515d84 Frank Wunderlich 2025-10-21  4577  	priv->ds_mux[id] = NULL;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4578  	return err;
577f2ee0515d84 Frank Wunderlich 2025-10-21  4579  }
577f2ee0515d84 Frank Wunderlich 2025-10-21  4580  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.