aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2010-11-04 15:31:30 +0100
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2010-11-08 11:41:15 -0500
commit2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a (patch)
treeee4de02c580b1e41eed25242b0e978d2a1ed1359
parentc8ac3902fb7a98c45ed54d98ad6f1c8168f47021 (diff)
downloadmrst-s0i3-test-2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a.tar.gz
mrst-s0i3-test-2a63dd7275b2278bd7e9203f74b9aa4f07e82a7a.tar.xz
mrst-s0i3-test-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>
-rw-r--r--drivers/pci/xen-pcifront.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
index 05792732718..3a5a6fcc0ea 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;