[PATCH 1/7] [trusty SRU] (upstream) net: eth: xgene: devm_ioremap() returns NULL on error

Craig Magina craig.magina at canonical.com
Fri May 22 20:49:15 UTC 2015


From: Dan Carpenter <dan.carpenter at oracle.com>

devm_ioremap() returns NULL on failure, it doesn't return an ERR_PTR.

BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1458042

Fixes: de7b5b3d790a ('net: eth: xgene: change APM X-Gene SoC platform ethernet to support ACPI')
Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
Acked-by: Iyappan Subramanian <isubramanian at apm.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
(cherry picked from commit 3ec7a176fa81107c20f1693c64873c11a6cd8fa4)
Signed-off-by: Phong Vo <pvo at apm.com>
Signed-off-by: Craig Magina <craig.magina at canonical.com>

Conflicts:
	drivers/net/ethernet/apm/xgene/xgene_enet_main.c
---
 drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 20 +++++++++++---------
 drivers/net/ethernet/apm/xgene/xgene_enet_main.h |  1 +
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index 0cd99d4..49788e3 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -756,10 +756,10 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
 		dev_err(dev, "Resource enet_csr not defined\n");
 		return -ENODEV;
 	}
-	pdata->base_addr = devm_ioremap_resource(dev, res);
-	if (IS_ERR(pdata->base_addr)) {
+	pdata->base_addr = devm_ioremap(dev, res->start, resource_size(res));
+	if (!pdata->base_addr) {
 		dev_err(dev, "Unable to retrieve ENET Port CSR region\n");
-		return PTR_ERR(pdata->base_addr);
+		return -ENOMEM;
 	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_csr");
@@ -767,10 +767,11 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
 		dev_err(dev, "Resource ring_csr not defined\n");
 		return -ENODEV;
 	}
-	pdata->ring_csr_addr = devm_ioremap_resource(dev, res);
-	if (IS_ERR(pdata->ring_csr_addr)) {
+	pdata->ring_csr_addr = devm_ioremap(dev, res->start,
+							resource_size(res));
+	if (!pdata->ring_csr_addr) {
 		dev_err(dev, "Unable to retrieve ENET Ring CSR region\n");
-		return PTR_ERR(pdata->ring_csr_addr);
+		return -ENOMEM;
 	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_cmd");
@@ -778,10 +779,11 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
 		dev_err(dev, "Resource ring_cmd not defined\n");
 		return -ENODEV;
 	}
-	pdata->ring_cmd_addr = devm_ioremap_resource(dev, res);
-	if (IS_ERR(pdata->ring_cmd_addr)) {
+	pdata->ring_cmd_addr = devm_ioremap(dev, res->start,
+							resource_size(res));
+	if (!pdata->ring_cmd_addr) {
 		dev_err(dev, "Unable to retrieve ENET Ring command region\n");
-		return PTR_ERR(pdata->ring_cmd_addr);
+		return -ENOMEM;
 	}
 
 	ret = platform_get_irq(pdev, 0);
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
index 6855483..2ef5c8a 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
@@ -26,6 +26,7 @@
 #include <linux/of_platform.h>
 #include <linux/of_net.h>
 #include <linux/of_mdio.h>
+#include <linux/io.h>
 #include <linux/module.h>
 #include <net/ip.h>
 #include <linux/prefetch.h>
-- 
2.1.4





More information about the kernel-team mailing list