Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1488543 > unrolled thread

[PATCH 03/11] staging: dgnc: missing NULL check for ioremap in

Started byDaeseok Youn <daeseok.youn@gmail.com>
First post2016-09-22 07:30 +0200
Last post2016-09-22 09:30 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [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

#1488543 — [PATCH 03/11] staging: dgnc: missing NULL check for ioremap in

FromDaeseok Youn <daeseok.youn@gmail.com>
Date2016-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]


#1488597

FromGreg KH <gregkh@linuxfoundation.org>
Date2016-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