Skip to contentSkip to conversation

vdpa: set the virtqueue num during register

bug report Dan Carpenter 1 participant 1 message Feb 25, 2021 virtio core

lore
Share & tools
lore
#0 lore raw

Hello Jason Wang,

The patch ddd50f4495d3: "vdpa: set the virtqueue num during register" from Feb 23, 2021, leads to the following static checker warning:

	drivers/vdpa/ifcvf/ifcvf_main.c:433 ifcvf_probe()
	warn: risky error pointer math: '__vdpa_alloc_device(dev, &ifc_vdpa_ops, 2592 + (0), (0)))'

include/linux/vdpa.h
255 #define vdpa_alloc_device(dev_struct, member, parent, config, name) \
256 container_of(__vdpa_alloc_device( \

   257                                         parent, config, \
   258                                         sizeof(dev_struct) + \
   259                                         BUILD_BUG_ON_ZERO(offsetof( \
   260                                         dev_struct, member)), name), \
   261                                         dev_struct, member)

262

The __vdpa_alloc_device() returns an error pointer and if we call container_of() on then that's a bug... (Unless the container_of() is known to be a no-op, in which case it's sort of ugly but fine, I guess. There is one caller where this is the case.).

drivers/vdpa/ifcvf/ifcvf_main.c
432
433 adapter = vdpa_alloc_device(struct ifcvf_adapter, vdpa,
434 dev, &ifc_vdpa_ops, NULL);
435 if (adapter == NULL) {

All the other caller check for NULL. :P

   436                  IFCVF_ERR(pdev, "Failed to allocate vDPA structure");
   437                  return -ENOMEM;
   438          }
   439  
   440          pci_set_master(pdev);
   441          pci_set_drvdata(pdev, adapter);
   442  

regards,
dan carpenter
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization