]> Git Repo - linux.git/commitdiff
xen-pciback: fix up cleanup path when alloc fails
authorDoug Goldstein <[email protected]>
Thu, 26 Nov 2015 20:32:39 +0000 (14:32 -0600)
committerKonrad Rzeszutek Wilk <[email protected]>
Fri, 18 Dec 2015 16:38:48 +0000 (11:38 -0500)
When allocating a pciback device fails, clear the private
field. This could lead to an use-after free, however
the 'really_probe' takes care of setting
dev_set_drvdata(dev, NULL) in its failure path (which we would
exercise if the ->probe function failed), so we we
are OK. However lets be defensive as the code can change.

Going forward we should clean up the pci_set_drvdata(dev, NULL)
in the various code-base. That will be for another day.

Reviewed-by: Boris Ostrovsky <[email protected]>
Reported-by: Jonathan Creekmore <[email protected]>
Signed-off-by: Doug Goldstein <[email protected]>
Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
drivers/xen/xen-pciback/xenbus.c

index 98bc345f296ef866eaf0e3b1ffffad12ca35fb7e..4843741e703a336da72162af91165392f0560490 100644 (file)
@@ -44,7 +44,6 @@ static struct xen_pcibk_device *alloc_pdev(struct xenbus_device *xdev)
        dev_dbg(&xdev->dev, "allocated pdev @ 0x%p\n", pdev);
 
        pdev->xdev = xdev;
-       dev_set_drvdata(&xdev->dev, pdev);
 
        mutex_init(&pdev->dev_lock);
 
@@ -58,6 +57,9 @@ static struct xen_pcibk_device *alloc_pdev(struct xenbus_device *xdev)
                kfree(pdev);
                pdev = NULL;
        }
+
+       dev_set_drvdata(&xdev->dev, pdev);
+
 out:
        return pdev;
 }
This page took 0.070147 seconds and 4 git commands to generate.