Prev: [patch] pata_winbond: fix module init
Next: [PATCH 11/11] sis: do not use PCI resources before pci_enable_device()
From: Michael S. Tsirkin on 3 Aug 2010 11:50 On Tue, Aug 03, 2010 at 07:44:23PM +0400, Kulikov Vasiliy wrote: > 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(a)gmail.com> Looks sane. Acked-by: Michael S. Tsirkin <mst(a)redhat.com> > --- > 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.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Hans J. Koch on 3 Aug 2010 13:30
On Tue, Aug 03, 2010 at 07:44:23PM +0400, Kulikov Vasiliy wrote: > 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(a)gmail.com> Looks alright to me, thanks! Signed-off-by: Hans J. Koch <hjk(a)linutronix.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.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |