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
[ Upstream commit 27d6162 ]

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>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Stuart Hayes authored and Greg Kroah-Hartman committed Dec 25, 2017
1 parent 98c3d06 commit 9e2dfe9
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 @@ -106,7 +106,6 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset)
pci_device_add(virtfn, virtfn->bus);
mutex_unlock(&iov->dev->sriov->lock);

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 @@ -117,6 +116,8 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset)

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

pci_bus_add_device(virtfn);

return 0;

failed2:
Expand Down

0 comments on commit 9e2dfe9

Please sign in to comment.