From: Alex Williamson Date: Tue, 31 Mar 2026 20:24:41 +0000 (-0600) Subject: vfio/pci: Require vfio_device_ops.name X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7487d8db3336839567aabae24618a4f2f2f2adad;p=thirdparty%2Flinux.git vfio/pci: Require vfio_device_ops.name vfio-pci-core code makes use of the vfio_device_ops.name field in order to set a default driver_override for VFs created on a user-owned PF. This avoids default driver matching, which might otherwise bind those VFs to native drivers. The mechanism for this currently uses kasprintf(), which will set driver_override to the literal "(null)" if name is NULL. This is effective in sequestering the device, but presents a challenging debug situation to differentiate driver_override being set to "(null)" versus being NULL and interpreted as "(null)" via the sysfs show attribute. There's also a tree-wide effort to convert to generic driver_override support, where passing NULL will generate an error, resulting in a WARN_ON without setting any driver_override. All drivers making use of vfio-pci-core already set a driver name, therefore by requiring this behavior, all of these corner cases are rendered moot. This is expected to have no impact on current in-kernel drivers. Suggested-by: Danilo Krummrich Signed-off-by: Alex Williamson Reviewed-by: Danilo Krummrich Link: https://lore.kernel.org/r/20260331202443.2598404-1-alex.williamson@nvidia.com Signed-off-by: Alex Williamson --- diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index d43745fe4c84..84d60689d386 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -2139,6 +2139,10 @@ int vfio_pci_core_register_device(struct vfio_pci_core_device *vdev) if (WARN_ON(vdev != dev_get_drvdata(dev))) return -EINVAL; + /* Drivers must set a name. Required for sequestering SR-IOV VFs */ + if (WARN_ON(!vdev->vdev.ops->name)) + return -EINVAL; + if (pdev->hdr_type != PCI_HEADER_TYPE_NORMAL) return -EINVAL;