diff options
| author | Michael Brown | 2014-07-16 16:49:08 +0200 |
|---|---|---|
| committer | Michael Brown | 2014-07-16 16:49:08 +0200 |
| commit | 9ce2b56af6b37a9916c779645c7c8b5c0fbdb881 (patch) | |
| tree | 9d0520b3e52bfd578972b01ae8a60717457d220f | |
| parent | [ioapi] Fail ioremap() when attempting to map a zero bus address (diff) | |
| download | ipxe-9ce2b56af6b37a9916c779645c7c8b5c0fbdb881.tar.gz ipxe-9ce2b56af6b37a9916c779645c7c8b5c0fbdb881.tar.xz ipxe-9ce2b56af6b37a9916c779645c7c8b5c0fbdb881.zip | |
[intel] Check for ioremap() failures
Debugged-by: Anton D. Kachalov <mouse@yandex-team.ru>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
| -rw-r--r-- | src/drivers/net/intel.c | 5 | ||||
| -rw-r--r-- | src/drivers/net/intelx.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c index 771a4c824..f2ee4f4d2 100644 --- a/src/drivers/net/intel.c +++ b/src/drivers/net/intel.c @@ -819,6 +819,10 @@ static int intel_probe ( struct pci_device *pci ) { /* Map registers */ intel->regs = ioremap ( pci->membase, INTEL_BAR_SIZE ); + if ( ! intel->regs ) { + rc = -ENODEV; + goto err_ioremap; + } /* Reset the NIC */ if ( ( rc = intel_reset ( intel ) ) != 0 ) @@ -843,6 +847,7 @@ static int intel_probe ( struct pci_device *pci ) { intel_reset ( intel ); err_reset: iounmap ( intel->regs ); + err_ioremap: netdev_nullify ( netdev ); netdev_put ( netdev ); err_alloc: diff --git a/src/drivers/net/intelx.c b/src/drivers/net/intelx.c index eb8b2a640..defea9dac 100644 --- a/src/drivers/net/intelx.c +++ b/src/drivers/net/intelx.c @@ -400,6 +400,10 @@ static int intelx_probe ( struct pci_device *pci ) { /* Map registers */ intel->regs = ioremap ( pci->membase, INTEL_BAR_SIZE ); + if ( ! intel->regs ) { + rc = -ENODEV; + goto err_ioremap; + } /* Reset the NIC */ if ( ( rc = intelx_reset ( intel ) ) != 0 ) @@ -424,6 +428,7 @@ static int intelx_probe ( struct pci_device *pci ) { intelx_reset ( intel ); err_reset: iounmap ( intel->regs ); + err_ioremap: netdev_nullify ( netdev ); netdev_put ( netdev ); err_alloc: |
