From: "Randy.Dunlap" <rddunlap@osdl.org>
To: dwmw2@infradead.org
Cc: lkml <linux-kernel@vger.kernel.org>
Subject: [PATCH] applicom LEAK #warning
Date: Wed, 17 Sep 2003 11:11:51 -0700 [thread overview]
Message-ID: <20030917111151.27ff73c9.rddunlap@osdl.org> (raw)
Hi David,
This is an attempt to fix the LEAK #warning in applicom.c.
The patch calls iounmap() for the composite memory area
after all of the individual areas are mapped. Is that OK?
It also adds some unwinding of resources on failed cases
and doesn't save <irq> on request_irq() failure.
Question: why are some error conditions in applicom_init()
handled by "return -EIO" and others handled by "continue"?
Comments?
Thanks,
--
~Randy
patch_name: applicom_leak.patch
patch_version: 2003-09-17.11:06:35
author: Randy.Dunlap <rddunlap@osdl.org>
description: fix ioremap() leak and #warning;
unwind init on errors;
don't save irq on request_irq() failure;
product: Linux
product_versions: 2.6.0-test5
maintainer: David Woodhouse (dwmw2@infradead.org)
diffstat: =
drivers/char/applicom.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff -Naurp ./drivers/char/applicom.c~appleak ./drivers/char/applicom.c
--- ./drivers/char/applicom.c~appleak 2003-09-08 12:50:29.000000000 -0700
+++ ./drivers/char/applicom.c 2003-09-17 11:06:01.000000000 -0700
@@ -192,7 +192,7 @@ int __init applicom_init(void)
{
int i, numisa = 0;
struct pci_dev *dev = NULL;
- void *RamIO;
+ void *RamIO, *maxRamIO;
int boardno;
printk(KERN_INFO "Applicom driver: $Id: ac.c,v 1.30 2000/03/22 16:03:57 dwmw2 Exp $\n");
@@ -214,6 +214,7 @@ int __init applicom_init(void)
if (!RamIO) {
printk(KERN_INFO "ac.o: Failed to ioremap PCI memory space at 0x%lx\n", dev->resource[0].start);
+ pci_disable_device(dev);
return -EIO;
}
@@ -225,12 +226,14 @@ int __init applicom_init(void)
(unsigned long)RamIO,0))) {
printk(KERN_INFO "ac.o: PCI Applicom device doesn't have correct signature.\n");
iounmap(RamIO);
+ pci_disable_device(dev);
continue;
}
if (request_irq(dev->irq, &ac_interrupt, SA_SHIRQ, "Applicom PCI", &dummy)) {
printk(KERN_INFO "Could not allocate IRQ %d for PCI Applicom device.\n", dev->irq);
iounmap(RamIO);
+ pci_disable_device(dev);
apbs[boardno - 1].RamIO = 0;
continue;
}
@@ -257,10 +260,9 @@ int __init applicom_init(void)
/* Now try the specified ISA cards */
-#warning "LEAK"
- RamIO = ioremap(mem, LEN_RAM_IO * MAX_ISA_BOARD);
+ maxRamIO = ioremap(mem, LEN_RAM_IO * MAX_ISA_BOARD);
- if (!RamIO)
+ if (!maxRamIO)
printk(KERN_INFO "ac.o: Failed to ioremap ISA memory space at 0x%lx\n", mem);
for (i = 0; i < MAX_ISA_BOARD; i++) {
@@ -285,7 +287,8 @@ int __init applicom_init(void)
iounmap((void *) RamIO);
apbs[boardno - 1].RamIO = 0;
}
- apbs[boardno - 1].irq = irq;
+ else
+ apbs[boardno - 1].irq = irq;
}
else
apbs[boardno - 1].irq = 0;
@@ -296,6 +299,8 @@ int __init applicom_init(void)
if (!numisa)
printk(KERN_WARNING"ac.o: No valid ISA Applicom boards found at mem 0x%lx\n",mem);
+ iounmap(maxRamIO);
+
fin:
init_waitqueue_head(&FlagSleepRec);
reply other threads:[~2003-09-17 18:18 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030917111151.27ff73c9.rddunlap@osdl.org \
--to=rddunlap@osdl.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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®