lkml.org 
[lkml]   [2006]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH 4/4] Char: mxser_new, check request_region retvals
From
Date
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 <jirislaby@gmail.com>

---
commit 4942c46b234b3aefcfae4ceb59e54af7b537895d
tree 50f2c7a81bed712b9663e595cb25a070e862a640
parent 1a717bdb06cef859dfbd426f46ea24a9c740e5c5
author Jiri Slaby <jirislaby@gmail.com> Sat, 30 Sep 2006 01:24:31 +0200
committer Jiri Slaby <xslaby@anemoi.localdomain> 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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-10-01 00:37    [W:0.026 / U:0.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site