Re: [PATCH v3 1/2] vdpa: support set mac address from vdpa tool

From: kernel test robot
Date: Mon Jul 08 2024 - 05:16:09 EST


Hi Cindy,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on horms-ipvs/master v6.10-rc7 next-20240703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Cindy-Lu/vdpa-support-set-mac-address-from-vdpa-tool/20240708-144942
base: linus/master
patch link: https://lore.kernel.org/r/20240708064820.88955-2-lulu%40redhat.com
patch subject: [PATCH v3 1/2] vdpa: support set mac address from vdpa tool
config: i386-buildonly-randconfig-005-20240708 (https://download.01.org/0day-ci/archive/20240708/202407081733.FCiMubD8-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240708/202407081733.FCiMubD8-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407081733.FCiMubD8-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/vdpa/vdpa.c:1377:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
1377 | if ((mdev->supported_features & BIT_ULL(VIRTIO_NET_F_MAC)) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1378 | nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/vdpa/vdpa.c:1394:9: note: uninitialized use occurs here
1394 | return err;
| ^~~
drivers/vdpa/vdpa.c:1377:2: note: remove the 'if' if its condition is always true
1377 | if ((mdev->supported_features & BIT_ULL(VIRTIO_NET_F_MAC)) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1378 | nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/vdpa/vdpa.c:1377:6: warning: variable 'err' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
1377 | if ((mdev->supported_features & BIT_ULL(VIRTIO_NET_F_MAC)) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/vdpa/vdpa.c:1394:9: note: uninitialized use occurs here
1394 | return err;
| ^~~
drivers/vdpa/vdpa.c:1377:6: note: remove the '&&' if its condition is always true
1377 | if ((mdev->supported_features & BIT_ULL(VIRTIO_NET_F_MAC)) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/vdpa/vdpa.c:1371:9: note: initialize the variable 'err' to silence this warning
1371 | int err;
| ^
| = 0
2 warnings generated.


vim +1377 drivers/vdpa/vdpa.c

1363
1364 static int vdpa_dev_net_device_attr_set(struct vdpa_device *vdev,
1365 struct genl_info *info)
1366 {
1367 struct vdpa_dev_set_config set_config = {};
1368 const u8 *macaddr;
1369 struct vdpa_mgmt_dev *mdev = vdev->mdev;
1370 struct nlattr **nl_attrs = info->attrs;
1371 int err;
1372
1373 if (!vdev->mdev)
1374 return -EINVAL;
1375
1376 down_write(&vdev->cf_lock);
> 1377 if ((mdev->supported_features & BIT_ULL(VIRTIO_NET_F_MAC)) &&
1378 nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]) {
1379 set_config.mask |= BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MACADDR);
1380 macaddr = nla_data(nl_attrs[VDPA_ATTR_DEV_NET_CFG_MACADDR]);
1381 memcpy(set_config.net.mac, macaddr, ETH_ALEN);
1382
1383 if (mdev->ops->dev_set_attr) {
1384 err = mdev->ops->dev_set_attr(mdev, vdev, &set_config);
1385 } else {
1386 NL_SET_ERR_MSG_FMT_MOD(info->extack,
1387 "features 0x%llx not supported",
1388 BIT_ULL(VIRTIO_NET_F_MAC));
1389 err = -EINVAL;
1390 }
1391 }
1392 up_write(&vdev->cf_lock);
1393
1394 return err;
1395 }
1396 static int vdpa_nl_cmd_dev_attr_set_doit(struct sk_buff *skb,
1397 struct genl_info *info)
1398 {
1399 const char *name;
1400 int err = 0;
1401 struct device *dev;
1402 struct vdpa_device *vdev;
1403 u64 classes;
1404
1405 if (!info->attrs[VDPA_ATTR_DEV_NAME])
1406 return -EINVAL;
1407
1408 name = nla_data(info->attrs[VDPA_ATTR_DEV_NAME]);
1409
1410 down_write(&vdpa_dev_lock);
1411 dev = bus_find_device(&vdpa_bus, NULL, name, vdpa_name_match);
1412 if (!dev) {
1413 NL_SET_ERR_MSG_MOD(info->extack, "device not found");
1414 err = -ENODEV;
1415 goto dev_err;
1416 }
1417 vdev = container_of(dev, struct vdpa_device, dev);
1418 if (!vdev->mdev) {
1419 NL_SET_ERR_MSG_MOD(
1420 info->extack,
1421 "Fail to find the specified management device");
1422 err = -EINVAL;
1423 goto mdev_err;
1424 }
1425 classes = vdpa_mgmtdev_get_classes(vdev->mdev, NULL);
1426 if (classes & BIT_ULL(VIRTIO_ID_NET)) {
1427 err = vdpa_dev_net_device_attr_set(vdev, info);
1428 } else {
1429 NL_SET_ERR_MSG_FMT_MOD(info->extack, "%s device not supported",
1430 name);
1431 }
1432
1433 mdev_err:
1434 put_device(dev);
1435 dev_err:
1436 up_write(&vdpa_dev_lock);
1437 return err;
1438 }
1439

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki