|
@@ -173,7 +173,13 @@ static void virtfn_remove(struct pci_dev *dev, int id, int reset)
|
|
|
|
|
|
sprintf(buf, "virtfn%u", id);
|
|
|
sysfs_remove_link(&dev->dev.kobj, buf);
|
|
|
- sysfs_remove_link(&virtfn->dev.kobj, "physfn");
|
|
|
+ /*
|
|
|
+ * pci_stop_dev() could have been called for this virtfn already,
|
|
|
+ * so the directory for the virtfn may have been removed before.
|
|
|
+ * Double check to avoid spurious sysfs warnings.
|
|
|
+ */
|
|
|
+ if (virtfn->dev.kobj.sd)
|
|
|
+ sysfs_remove_link(&virtfn->dev.kobj, "physfn");
|
|
|
|
|
|
mutex_lock(&iov->dev->sriov->lock);
|
|
|
pci_remove_bus_device(virtfn);
|