* [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device @ 2010-09-26 16:50 Rahul Ruikar 2010-09-26 17:11 ` Rahul Ruikar 0 siblings, 1 reply; 4+ messages in thread From: Rahul Ruikar @ 2010-09-26 16:50 UTC (permalink / raw) To: linux-pcmcia, linux-kernel; +Cc: Rahul Ruikar - pci_release_regions called during return error path. - pci_disable_device called for cases where earlier it was enabled. - code duplication avoided/reduced by adding resource release at goto statements. Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com> --- drivers/pcmcia/vrc4173_cardu.c | 58 +++++++++++++++++++++++++++------------- 1 files changed, 39 insertions(+), 19 deletions(-) diff --git a/drivers/pcmcia/vrc4173_cardu.c b/drivers/pcmcia/vrc4173_cardu.c index 9b3c158..c6d36b3 100644 --- a/drivers/pcmcia/vrc4173_cardu.c +++ b/drivers/pcmcia/vrc4173_cardu.c @@ -461,7 +461,7 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, { vrc4173_socket_t *socket; unsigned long start, len, flags; - int slot, err; + int slot, err, ret; slot = vrc4173_cardu_slots++; socket = &cardu_sockets[slot]; @@ -474,43 +474,63 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, return err; start = pci_resource_start(dev, 0); - if (start == 0) - return -ENODEV; + if (start == 0) { + ret = -ENODEV; + goto disable; + } len = pci_resource_len(dev, 0); - if (len == 0) - return -ENODEV; + if (len == 0) { + ret = -ENODEV; + goto disable; + } - if (((flags = pci_resource_flags(dev, 0)) & IORESOURCE_MEM) == 0) - return -EBUSY; + flags = pci_resource_flags(dev, 0); + if ((flags & IORESOURCE_MEM) == 0) { + ret = -EBUSY; + goto disable; + } - if ((err = pci_request_regions(dev, socket->name)) < 0) - return err; + err = pci_request_regions(dev, socket->name); + if (err < 0) { + ret = err; + goto disable; + } socket->base = ioremap(start, len); - if (socket->base == NULL) - return -ENODEV; + if (socket->base == NULL) { + ret = -ENODEV; + goto release; + } socket->dev = dev; socket->pcmcia_socket = pcmcia_register_socket(slot, &cardu_operations, 1); if (socket->pcmcia_socket == NULL) { - iounmap(socket->base); - socket->base = NULL; - return -ENOMEM; + ret = -ENOMEM; + goto unmap; } if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) { - pcmcia_unregister_socket(socket->pcmcia_socket); - socket->pcmcia_socket = NULL; - iounmap(socket->base); - socket->base = NULL; - return -EBUSY; + ret = -EBUSY; + goto unregister; } printk(KERN_INFO "%s at %#08lx, IRQ %d\n", socket->name, start, dev->irq); return 0; + +unregister: + pcmcia_unregister_socket(socket->pcmcia_socket); + socket->pcmcia_socket = NULL; +unmap: + iounmap(socket->base); + socket->base = NULL; +release: + pci_release_regions(dev); +disable: + pci_disable_device(dev); + return ret; } static int __devinit vrc4173_cardu_setup(char *options) -- 1.7.2.3 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device 2010-09-26 16:50 [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device Rahul Ruikar @ 2010-09-26 17:11 ` Rahul Ruikar 2010-09-29 3:34 ` Rahul Ruikar 0 siblings, 1 reply; 4+ messages in thread From: Rahul Ruikar @ 2010-09-26 17:11 UTC (permalink / raw) To: linux-pcmcia, linux-kernel; +Cc: Rahul Ruikar [-- Attachment #1: Type: text/plain, Size: 3792 bytes --] patchwork link not showing latest changes of RESEND patch. hence attaching in mail https://patchwork.kernel.org/patch/210152/ - Rahul Ruikar On 26 September 2010 22:20, Rahul Ruikar <rahul.ruikar@gmail.com> wrote: > - pci_release_regions called during return error path. > - pci_disable_device called for cases where earlier it was enabled. > - code duplication avoided/reduced by adding resource release at goto statements. > > Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com> > --- > drivers/pcmcia/vrc4173_cardu.c | 58 +++++++++++++++++++++++++++------------- > 1 files changed, 39 insertions(+), 19 deletions(-) > > diff --git a/drivers/pcmcia/vrc4173_cardu.c b/drivers/pcmcia/vrc4173_cardu.c > index 9b3c158..c6d36b3 100644 > --- a/drivers/pcmcia/vrc4173_cardu.c > +++ b/drivers/pcmcia/vrc4173_cardu.c > @@ -461,7 +461,7 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, > { > vrc4173_socket_t *socket; > unsigned long start, len, flags; > - int slot, err; > + int slot, err, ret; > > slot = vrc4173_cardu_slots++; > socket = &cardu_sockets[slot]; > @@ -474,43 +474,63 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, > return err; > > start = pci_resource_start(dev, 0); > - if (start == 0) > - return -ENODEV; > + if (start == 0) { > + ret = -ENODEV; > + goto disable; > + } > > len = pci_resource_len(dev, 0); > - if (len == 0) > - return -ENODEV; > + if (len == 0) { > + ret = -ENODEV; > + goto disable; > + } > > - if (((flags = pci_resource_flags(dev, 0)) & IORESOURCE_MEM) == 0) > - return -EBUSY; > + flags = pci_resource_flags(dev, 0); > + if ((flags & IORESOURCE_MEM) == 0) { > + ret = -EBUSY; > + goto disable; > + } > > - if ((err = pci_request_regions(dev, socket->name)) < 0) > - return err; > + err = pci_request_regions(dev, socket->name); > + if (err < 0) { > + ret = err; > + goto disable; > + } > > socket->base = ioremap(start, len); > - if (socket->base == NULL) > - return -ENODEV; > + if (socket->base == NULL) { > + ret = -ENODEV; > + goto release; > + } > > socket->dev = dev; > > socket->pcmcia_socket = pcmcia_register_socket(slot, &cardu_operations, 1); > if (socket->pcmcia_socket == NULL) { > - iounmap(socket->base); > - socket->base = NULL; > - return -ENOMEM; > + ret = -ENOMEM; > + goto unmap; > } > > if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) { > - pcmcia_unregister_socket(socket->pcmcia_socket); > - socket->pcmcia_socket = NULL; > - iounmap(socket->base); > - socket->base = NULL; > - return -EBUSY; > + ret = -EBUSY; > + goto unregister; > } > > printk(KERN_INFO "%s at %#08lx, IRQ %d\n", socket->name, start, dev->irq); > > return 0; > + > +unregister: > + pcmcia_unregister_socket(socket->pcmcia_socket); > + socket->pcmcia_socket = NULL; > +unmap: > + iounmap(socket->base); > + socket->base = NULL; > +release: > + pci_release_regions(dev); > +disable: > + pci_disable_device(dev); > + return ret; > } > > static int __devinit vrc4173_cardu_setup(char *options) > -- > 1.7.2.3 > > [-- Attachment #2: 0001-pcmcia-vrc4173_cardu-Fix-error-path-for-pci_release_.patch --] [-- Type: application/octet-stream, Size: 2928 bytes --] From 6260ad657b325019bce1c94c1112921a6134c414 Mon Sep 17 00:00:00 2001 From: Rahul Ruikar <rahul.ruikar@gmail.com> Date: Sun, 26 Sep 2010 21:32:13 +0530 Subject: [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device - pci_release_regions called during return error path. - pci_disable_device called for cases where earlier it was enabled. - code duplication avoided/reduced by adding resource release at goto statements. Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com> --- drivers/pcmcia/vrc4173_cardu.c | 58 +++++++++++++++++++++++++++------------- 1 files changed, 39 insertions(+), 19 deletions(-) diff --git a/drivers/pcmcia/vrc4173_cardu.c b/drivers/pcmcia/vrc4173_cardu.c index 9b3c158..c6d36b3 100644 --- a/drivers/pcmcia/vrc4173_cardu.c +++ b/drivers/pcmcia/vrc4173_cardu.c @@ -461,7 +461,7 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, { vrc4173_socket_t *socket; unsigned long start, len, flags; - int slot, err; + int slot, err, ret; slot = vrc4173_cardu_slots++; socket = &cardu_sockets[slot]; @@ -474,43 +474,63 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, return err; start = pci_resource_start(dev, 0); - if (start == 0) - return -ENODEV; + if (start == 0) { + ret = -ENODEV; + goto disable; + } len = pci_resource_len(dev, 0); - if (len == 0) - return -ENODEV; + if (len == 0) { + ret = -ENODEV; + goto disable; + } - if (((flags = pci_resource_flags(dev, 0)) & IORESOURCE_MEM) == 0) - return -EBUSY; + flags = pci_resource_flags(dev, 0); + if ((flags & IORESOURCE_MEM) == 0) { + ret = -EBUSY; + goto disable; + } - if ((err = pci_request_regions(dev, socket->name)) < 0) - return err; + err = pci_request_regions(dev, socket->name); + if (err < 0) { + ret = err; + goto disable; + } socket->base = ioremap(start, len); - if (socket->base == NULL) - return -ENODEV; + if (socket->base == NULL) { + ret = -ENODEV; + goto release; + } socket->dev = dev; socket->pcmcia_socket = pcmcia_register_socket(slot, &cardu_operations, 1); if (socket->pcmcia_socket == NULL) { - iounmap(socket->base); - socket->base = NULL; - return -ENOMEM; + ret = -ENOMEM; + goto unmap; } if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) { - pcmcia_unregister_socket(socket->pcmcia_socket); - socket->pcmcia_socket = NULL; - iounmap(socket->base); - socket->base = NULL; - return -EBUSY; + ret = -EBUSY; + goto unregister; } printk(KERN_INFO "%s at %#08lx, IRQ %d\n", socket->name, start, dev->irq); return 0; + +unregister: + pcmcia_unregister_socket(socket->pcmcia_socket); + socket->pcmcia_socket = NULL; +unmap: + iounmap(socket->base); + socket->base = NULL; +release: + pci_release_regions(dev); +disable: + pci_disable_device(dev); + return ret; } static int __devinit vrc4173_cardu_setup(char *options) -- 1.7.2.3 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device 2010-09-26 17:11 ` Rahul Ruikar @ 2010-09-29 3:34 ` Rahul Ruikar 2010-09-29 8:47 ` Yuasa Yoichi 0 siblings, 1 reply; 4+ messages in thread From: Rahul Ruikar @ 2010-09-29 3:34 UTC (permalink / raw) To: linux-pcmcia, linux-kernel; +Cc: Rahul Ruikar anyone to review / accept ??? I could not find any particular maintainer for this patch through "./scripts/get_maintainer.pl" except these 2 lists. Regards, Rahul Ruikar On 26 September 2010 22:41, Rahul Ruikar <rahul.ruikar@gmail.com> wrote: > patchwork link not showing latest changes of RESEND patch. hence > attaching in mail > https://patchwork.kernel.org/patch/210152/ > > - Rahul Ruikar > > > > > > On 26 September 2010 22:20, Rahul Ruikar <rahul.ruikar@gmail.com> wrote: >> - pci_release_regions called during return error path. >> - pci_disable_device called for cases where earlier it was enabled. >> - code duplication avoided/reduced by adding resource release at goto statements. >> >> Signed-off-by: Rahul Ruikar <rahul.ruikar@gmail.com> >> --- >> drivers/pcmcia/vrc4173_cardu.c | 58 +++++++++++++++++++++++++++------------- >> 1 files changed, 39 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/pcmcia/vrc4173_cardu.c b/drivers/pcmcia/vrc4173_cardu.c >> index 9b3c158..c6d36b3 100644 >> --- a/drivers/pcmcia/vrc4173_cardu.c >> +++ b/drivers/pcmcia/vrc4173_cardu.c >> @@ -461,7 +461,7 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, >> { >> vrc4173_socket_t *socket; >> unsigned long start, len, flags; >> - int slot, err; >> + int slot, err, ret; >> >> slot = vrc4173_cardu_slots++; >> socket = &cardu_sockets[slot]; >> @@ -474,43 +474,63 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev, >> return err; >> >> start = pci_resource_start(dev, 0); >> - if (start == 0) >> - return -ENODEV; >> + if (start == 0) { >> + ret = -ENODEV; >> + goto disable; >> + } >> >> len = pci_resource_len(dev, 0); >> - if (len == 0) >> - return -ENODEV; >> + if (len == 0) { >> + ret = -ENODEV; >> + goto disable; >> + } >> >> - if (((flags = pci_resource_flags(dev, 0)) & IORESOURCE_MEM) == 0) >> - return -EBUSY; >> + flags = pci_resource_flags(dev, 0); >> + if ((flags & IORESOURCE_MEM) == 0) { >> + ret = -EBUSY; >> + goto disable; >> + } >> >> - if ((err = pci_request_regions(dev, socket->name)) < 0) >> - return err; >> + err = pci_request_regions(dev, socket->name); >> + if (err < 0) { >> + ret = err; >> + goto disable; >> + } >> >> socket->base = ioremap(start, len); >> - if (socket->base == NULL) >> - return -ENODEV; >> + if (socket->base == NULL) { >> + ret = -ENODEV; >> + goto release; >> + } >> >> socket->dev = dev; >> >> socket->pcmcia_socket = pcmcia_register_socket(slot, &cardu_operations, 1); >> if (socket->pcmcia_socket == NULL) { >> - iounmap(socket->base); >> - socket->base = NULL; >> - return -ENOMEM; >> + ret = -ENOMEM; >> + goto unmap; >> } >> >> if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) { >> - pcmcia_unregister_socket(socket->pcmcia_socket); >> - socket->pcmcia_socket = NULL; >> - iounmap(socket->base); >> - socket->base = NULL; >> - return -EBUSY; >> + ret = -EBUSY; >> + goto unregister; >> } >> >> printk(KERN_INFO "%s at %#08lx, IRQ %d\n", socket->name, start, dev->irq); >> >> return 0; >> + >> +unregister: >> + pcmcia_unregister_socket(socket->pcmcia_socket); >> + socket->pcmcia_socket = NULL; >> +unmap: >> + iounmap(socket->base); >> + socket->base = NULL; >> +release: >> + pci_release_regions(dev); >> +disable: >> + pci_disable_device(dev); >> + return ret; >> } >> >> static int __devinit vrc4173_cardu_setup(char *options) >> -- >> 1.7.2.3 >> >> > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device 2010-09-29 3:34 ` Rahul Ruikar @ 2010-09-29 8:47 ` Yuasa Yoichi 0 siblings, 0 replies; 4+ messages in thread From: Yuasa Yoichi @ 2010-09-29 8:47 UTC (permalink / raw) To: Rahul Ruikar; +Cc: linux-pcmcia, linux-kernel Hi, 2010/9/29 Rahul Ruikar <rahul.ruikar@gmail.com>: > anyone to review / accept ??? > I could not find any particular maintainer for this patch through > "./scripts/get_maintainer.pl" except these 2 lists. I reviewed it. It's OK. Yoichi ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-09-29 8:47 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-09-26 16:50 [RESEND] pcmcia: vrc4173_cardu: Fix error path for pci_release_regions and pci_disable_device Rahul Ruikar 2010-09-26 17:11 ` Rahul Ruikar 2010-09-29 3:34 ` Rahul Ruikar 2010-09-29 8:47 ` Yuasa Yoichi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®