Skip to content

Commit

Permalink
PCI: Create SR-IOV virtfn/physfn links before attaching driver
Browse files Browse the repository at this point in the history
When creating virtual functions, create the "virtfn%u" and "physfn" links
in sysfs *before* attaching the driver instead of after.  When we attach
the driver to the new virtual network interface first, there is a race when
the driver attaches to the new sends out an "add" udev event, and the
network interface naming software (biosdevname or systemd, for example)
tries to look at these links.

Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
  • Loading branch information
Stuart Hayes authored and Bjorn Helgaas committed Oct 11, 2017
1 parent 7dfca15 commit 27d6162
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/pci/iov.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,6 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)

pci_device_add(virtfn, virtfn->bus);

pci_bus_add_device(virtfn);
sprintf(buf, "virtfn%u", id);
rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);
if (rc)
Expand All @@ -170,6 +169,8 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)

kobject_uevent(&virtfn->dev.kobj, KOBJ_CHANGE);

pci_bus_add_device(virtfn);

return 0;

failed2:
Expand Down

0 comments on commit 27d6162

Please sign in to comment.