lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.5 178/542] PCI/IOV: Fix memory leak in pci_iov_add_virtfn()
    Date
    From: Navid Emamdoost <navid.emamdoost@gmail.com>

    [ Upstream commit 8c386cc817878588195dde38e919aa6ba9409d58 ]

    In the implementation of pci_iov_add_virtfn() the allocated virtfn is
    leaked if pci_setup_device() fails. The error handling is not calling
    pci_stop_and_remove_bus_device(). Change the goto label to failed2.

    Fixes: 156c55325d30 ("PCI: Check for pci_setup_device() failure in pci_iov_add_virtfn()")
    Link: https://lore.kernel.org/r/20191125195255.23740-1-navid.emamdoost@gmail.com
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pci/iov.c | 9 ++++-----
    1 file changed, 4 insertions(+), 5 deletions(-)

    diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
    index 1e88fd4277578..4d1f392b05f9a 100644
    --- a/drivers/pci/iov.c
    +++ b/drivers/pci/iov.c
    @@ -186,10 +186,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
    sprintf(buf, "virtfn%u", id);
    rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);
    if (rc)
    - goto failed2;
    + goto failed1;
    rc = sysfs_create_link(&virtfn->dev.kobj, &dev->dev.kobj, "physfn");
    if (rc)
    - goto failed3;
    + goto failed2;

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

    @@ -197,11 +197,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)

    return 0;

    -failed3:
    - sysfs_remove_link(&dev->dev.kobj, buf);
    failed2:
    - pci_stop_and_remove_bus_device(virtfn);
    + sysfs_remove_link(&dev->dev.kobj, buf);
    failed1:
    + pci_stop_and_remove_bus_device(virtfn);
    pci_dev_put(dev);
    failed0:
    virtfn_remove_bus(dev->bus, bus);
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 19:14    [W:2.507 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site