diff options
author | Jiri Slaby <jslaby@suse.cz> | 2010-11-04 15:31:30 +0100 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2010-11-08 11:41:15 -0500 |
commit | 2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a (patch) | |
tree | ee4de02c580b1e41eed25242b0e978d2a1ed1359 /drivers/pci/xen-pcifront.c | |
parent | c8ac3902fb7a98c45ed54d98ad6f1c8168f47021 (diff) | |
download | linux-2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a.tar.gz linux-2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a.tar.bz2 linux-2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a.zip |
xen-pcifront: fix PCI reference leak
Stanse found that when pdev is found and has no driver a reference is
leaked in pcifront_common_process. So add pci_dev_put there. For the
pdev == NULL case, pci_dev_put(NULL) is fine.
[v2: Updated to not dereference pcidev->dev per Milton's observation]
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Milton Miller <miltonm@bga.com>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/xen-pcifront.c')
-rw-r--r-- | drivers/pci/xen-pcifront.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c index 05792732718e..3a5a6fcc0ead 100644 --- a/drivers/pci/xen-pcifront.c +++ b/drivers/pci/xen-pcifront.c @@ -575,8 +575,9 @@ static pci_ers_result_t pcifront_common_process(int cmd, pcidev = pci_get_bus_and_slot(bus, devfn); if (!pcidev || !pcidev->driver) { - dev_err(&pcidev->dev, - "device or driver is NULL\n"); + dev_err(&pdev->xdev->dev, "device or AER driver is NULL\n"); + if (pcidev) + pci_dev_put(pcidev); return result; } pdrv = pcidev->driver; |