mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
PCI: Check for pci_setup_device() failure in pci_iov_add_virtfn()
If pci_setup_device() returns failure, we must return failure from pci_iov_add_virtfn(). If we ignore the failure and continue with an uninitialized pci_dev for virtfn, we crash later when we try to use those uninitialized parts. Signed-off-by: Po Liu <po.liu@nxp.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
8e2e031799
commit
156c55325d
@ -136,7 +136,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)
|
|||||||
virtfn->devfn = pci_iov_virtfn_devfn(dev, id);
|
virtfn->devfn = pci_iov_virtfn_devfn(dev, id);
|
||||||
virtfn->vendor = dev->vendor;
|
virtfn->vendor = dev->vendor;
|
||||||
pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device);
|
pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device);
|
||||||
pci_setup_device(virtfn);
|
rc = pci_setup_device(virtfn);
|
||||||
|
if (rc)
|
||||||
|
goto failed0;
|
||||||
|
|
||||||
virtfn->dev.parent = dev->dev.parent;
|
virtfn->dev.parent = dev->dev.parent;
|
||||||
virtfn->physfn = pci_dev_get(dev);
|
virtfn->physfn = pci_dev_get(dev);
|
||||||
virtfn->is_virtfn = 1;
|
virtfn->is_virtfn = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user