[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] pcifront: fix PCI reference leak



# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1289813577 0
# Node ID f7dde31efff3be20157ea08bb15126aee7a8d4c2
# Parent  af8830fcf50e4abd40bf7aaf0d954e71e7e7ecdf
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.

Signed-off-by: Jiri Slaby <jslaby@xxxxxxx>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Cc: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx>

From: Jiri Slaby <jslaby@xxxxxxx>
Subject: pcifront: fix potential NULL dereference

Milton spotted that we dereference NULL in one fail path in
pcifront_common_process. Fix that by using different device to print
out an error.

Signed-off-by: Jiri Slaby <jslaby@xxxxxxx>
Cc: Milton Miller <miltonm@xxxxxxx>

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 drivers/xen/pcifront/pci_op.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -r af8830fcf50e -r f7dde31efff3 drivers/xen/pcifront/pci_op.c
--- a/drivers/xen/pcifront/pci_op.c     Wed Nov 03 17:36:03 2010 +0000
+++ b/drivers/xen/pcifront/pci_op.c     Mon Nov 15 09:32:57 2010 +0000
@@ -592,9 +592,9 @@ static pci_ers_result_t pcifront_common_
        result = PCI_ERS_RESULT_NONE;
 
        pcidev = pci_get_bus_and_slot(bus, devfn);
-       if (!pcidev || !pcidev->driver){
-               dev_err(&pcidev->dev, 
-                       "device or driver is NULL\n");
+       if (!pcidev || !pcidev->driver) {
+               pci_dev_put(pcidev);
+               dev_err(&pdev->xdev->dev, "AER device or driver is NULL\n");
                return result;
        }
        pdrv = pcidev->driver;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.