staging: dgnc: missing NULL check for ioremap in dgnc_do_remap()
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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f530834ef4
commit
b09f0cd53f
1 changed files with 21 additions and 10 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue