Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1488543 > unrolled thread
| Started by | Daeseok Youn <daeseok.youn@gmail.com> |
|---|---|
| First post | 2016-09-22 07:30 +0200 |
| Last post | 2016-09-22 09:30 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH 03/11] staging: dgnc: missing NULL check for ioremap in Daeseok Youn <daeseok.youn@gmail.com> - 2016-09-22 07:30 +0200
Re: [PATCH 03/11] staging: dgnc: missing NULL check for ioremap in Greg KH <gregkh@linuxfoundation.org> - 2016-09-22 09:30 +0200
| From | Daeseok Youn <daeseok.youn@gmail.com> |
|---|---|
| Date | 2016-09-22 07:30 +0200 |
| Subject | [PATCH 03/11] staging: dgnc: missing NULL check for ioremap in |
| Message-ID | <sk4K6-2dI-11@gated-at.bofh.it> |
The ioremap() function can be failed, so it need to have error
handling in dgnc_do_remap(). And also the return type of
dgnc_do_remap() should be changed from "void" to "int"
Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
---
drivers/staging/dgnc/dgnc_driver.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/dgnc/dgnc_driver.c b/drivers/staging/dgnc/dgnc_driver.c
index c87b3de..58cebf4 100644
--- a/drivers/staging/dgnc/dgnc_driver.c
+++ b/drivers/staging/dgnc/dgnc_driver.c
@@ -43,7 +43,7 @@ static void dgnc_cleanup_board(struct dgnc_board *brd);
static void dgnc_poll_handler(ulong dummy);
static int dgnc_init_one(struct pci_dev *pdev,
const struct pci_device_id *ent);
-static void dgnc_do_remap(struct dgnc_board *brd);
+static int dgnc_do_remap(struct dgnc_board *brd);
/*
* File operations permitted on Control/Management major.
@@ -431,7 +431,10 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)
brd->bd_uart_offset = 0x8;
brd->bd_dividend = 921600;
- dgnc_do_remap(brd);
+ rc = dgnc_do_remap(brd);
+
+ if (rc < 0)
+ goto failed;
/* Get and store the board VPD, if it exists */
brd->bd_ops->vpd(brd);
@@ -483,15 +486,17 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)
brd->bd_uart_offset = 0x200;
brd->bd_dividend = 921600;
- dgnc_do_remap(brd);
+ rc = dgnc_do_remap(brd);
- if (brd->re_map_membase) {
- /* Read and store the dvid after remapping */
- brd->dvid = readb(brd->re_map_membase + 0x8D);
+ if (rc < 0)
+ goto failed;
+
+ /* Read and store the dvid after remapping */
+ brd->dvid = readb(brd->re_map_membase + 0x8D);
+
+ /* Get and store the board VPD, if it exists */
+ brd->bd_ops->vpd(brd);
- /* Get and store the board VPD, if it exists */
- brd->bd_ops->vpd(brd);
- }
break;
default:
@@ -566,9 +571,15 @@ static int dgnc_finalize_board_init(struct dgnc_board *brd)
/*
* Remap PCI memory.
*/
-static void dgnc_do_remap(struct dgnc_board *brd)
+static int dgnc_do_remap(struct dgnc_board *brd)
{
+ int rc = 0;
+
brd->re_map_membase = ioremap(brd->membase, 0x1000);
+ if (!brd->re_map_membase)
+ rc = -ENOMEM;
+
+ return rc;
}
/*
--
1.9.1
[toc] | [next] | [standalone]
| From | Greg KH <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2016-09-22 09:30 +0200 |
| Message-ID | <sk6Cd-3ml-5@gated-at.bofh.it> |
| In reply to | #1488543 |
On Thu, Sep 22, 2016 at 02:21:38PM +0900, Daeseok Youn wrote: > The ioremap() function can be failed, so it need to have error > handling in dgnc_do_remap(). And also the return type of > dgnc_do_remap() should be changed from "void" to "int" > > Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com> > --- > drivers/staging/dgnc/dgnc_driver.c | 31 +++++++++++++++++++++---------- > 1 file changed, 21 insertions(+), 10 deletions(-) Again, odd subject line, it seems to have been cut off.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web