summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2014-07-16 16:49:08 +0200
committerMichael Brown2014-07-16 16:49:08 +0200
commit9ce2b56af6b37a9916c779645c7c8b5c0fbdb881 (patch)
tree9d0520b3e52bfd578972b01ae8a60717457d220f /src
parent[ioapi] Fail ioremap() when attempting to map a zero bus address (diff)
downloadipxe-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>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/net/intel.c5
-rw-r--r--src/drivers/net/intelx.c5
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: