lkml.org 
[lkml]   [2010]   [Oct]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/31] uio: do not use PCI resources before pci_enable_device()
    Date
    From: Kulikov Vasiliy <segooon@gmail.com>

    IRQ and resource[] may not have correct values until
    after PCI hotplug setup occurs at pci_enable_device() time.

    The semantic match that finds this problem is as follows:

    // <smpl>
    @@
    identifier x;
    identifier request ~= "pci_request.*|pci_resource.*";
    @@

    (
    * x->irq
    |
    * x->resource
    |
    * request(x, ...)
    )
    ...
    *pci_enable_device(x)
    // </smpl>

    Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Hans J. Koch <hjk@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    drivers/uio/uio_pci_generic.c | 13 +++++++------
    1 files changed, 7 insertions(+), 6 deletions(-)

    diff --git a/drivers/uio/uio_pci_generic.c b/drivers/uio/uio_pci_generic.c
    index 85c9884..fc22e1e 100644
    --- a/drivers/uio/uio_pci_generic.c
    +++ b/drivers/uio/uio_pci_generic.c
    @@ -128,12 +128,6 @@ static int __devinit probe(struct pci_dev *pdev,
    struct uio_pci_generic_dev *gdev;
    int err;

    - if (!pdev->irq) {
    - dev_warn(&pdev->dev, "No IRQ assigned to device: "
    - "no support for interrupts?\n");
    - return -ENODEV;
    - }
    -
    err = pci_enable_device(pdev);
    if (err) {
    dev_err(&pdev->dev, "%s: pci_enable_device failed: %d\n",
    @@ -141,6 +135,13 @@ static int __devinit probe(struct pci_dev *pdev,
    return err;
    }

    + if (!pdev->irq) {
    + dev_warn(&pdev->dev, "No IRQ assigned to device: "
    + "no support for interrupts?\n");
    + pci_disable_device(pdev);
    + return -ENODEV;
    + }
    +
    err = verify_pci_2_3(pdev);
    if (err)
    goto err_verify;
    --
    1.7.2


    \
     
     \ /
      Last update: 2010-10-22 20:35    [W:0.019 / U:30.728 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site