Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b09f0cd5 authored by Daeseok Youn's avatar Daeseok Youn Committed by Greg Kroah-Hartman
Browse files

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: default avatarDaeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f530834e
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -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 (rc < 0)
			goto failed;

		if (brd->re_map_membase) {
		/* 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);
		}

		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;
}

/*