mxser_new, check request_region retvals
Return values of (pci_)request_region should be checked and error should be
returned if something is in bad state.
Signed-off-by: Jiri Slaby <[email protected]>
---
commit 4942c46b234b3aefcfae4ceb59e54af7b537895d
tree 50f2c7a81bed712b9663e595cb25a070e862a640
parent 1a717bdb06cef859dfbd426f46ea24a9c740e5c5
author Jiri Slaby <[email protected]> Sat, 30 Sep 2006 01:24:31 +0200
committer Jiri Slaby <[email protected]> Sat, 30 Sep 2006 01:24:31 +0200
drivers/char/mxser_new.c | 21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/char/mxser_new.c b/drivers/char/mxser_new.c
index c566cd0..4e881ac 100644
--- a/drivers/char/mxser_new.c
+++ b/drivers/char/mxser_new.c
@@ -622,19 +622,24 @@ static int __init mxser_get_PCI_conf(int
{
unsigned int i, j;
unsigned long ioaddress;
+ int retval;
/* io address */
brd->board_type = board_type;
brd->nports = mxser_numports[board_type - 1];
ioaddress = pci_resource_start(pdev, 2);
- pci_request_region(pdev, 2, "mxser(IO)");
+ retval = pci_request_region(pdev, 2, "mxser(IO)");
+ if (retval)
+ goto err;
for (i = 0; i < brd->nports; i++)
brd->ports[i].ioaddr = ioaddress + 8 * i;
/* vector */
ioaddress = pci_resource_start(pdev, 3);
- pci_request_region(pdev, 3, "mxser(vector)");
+ retval = pci_request_region(pdev, 3, "mxser(vector)");
+ if (retval)
+ goto err_relio;
brd->vector = ioaddress;
/* irq */
@@ -674,6 +679,10 @@ static int __init mxser_get_PCI_conf(int
brd->ports[i].baud_base = 921600;
}
return 0;
+err_relio:
+ pci_release_region(pdev, 2);
+err:
+ return retval;
}
static int __init mxser_init(void)
@@ -3002,8 +3011,12 @@ static int __init mxser_get_ISA_conf(int
brd->nports = 8;
else
brd->nports = 4;
- request_region(brd->ports[0].ioaddr, 8 * brd->nports, "mxser(IO)");
- request_region(brd->vector, 1, "mxser(vector)");
+ if (!request_region(brd->ports[0].ioaddr, 8 * brd->nports, "mxser(IO)"))
+ return MXSER_ERR_IOADDR;
+ if (!request_region(brd->vector, 1, "mxser(vector)")) {
+ release_region(brd->ports[0].ioaddr, 8 * brd->nports);
+ return MXSER_ERR_VECTOR;
+ }
return brd->nports;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]