From: Wei Yongjun <weiyongj...@huawei.com>

In case of error, the function ioremap() returns NULL pointer
not ERR_PTR(). The IS_ERR() test in the return value check
should be replaced with NULL test.

Also add check for return value of platform_get_resource().

Fixes: 54e19bc74f33 ("net: qcom/emac: do not use devm on internal
phy pdev")
Signed-off-by: Wei Yongjun <weiyongj...@huawei.com>
---
 drivers/net/ethernet/qualcomm/emac/emac-sgmii.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/qualcomm/emac/emac-sgmii.c 
b/drivers/net/ethernet/qualcomm/emac/emac-sgmii.c
index 3d2c05a..75c1b53 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-sgmii.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-sgmii.c
@@ -740,9 +740,14 @@ int emac_sgmii_config(struct platform_device *pdev, struct 
emac_adapter *adpt)
 
        /* Base address is the first address */
        res = platform_get_resource(sgmii_pdev, IORESOURCE_MEM, 0);
+       if (!res) {
+               ret = -EINVAL;
+               goto error_put_device;
+       }
+
        phy->base = ioremap(res->start, resource_size(res));
-       if (IS_ERR(phy->base)) {
-               ret = PTR_ERR(phy->base);
+       if (!phy->base) {
+               ret = -ENOMEM;
                goto error_put_device;
        }
 
@@ -750,8 +755,8 @@ int emac_sgmii_config(struct platform_device *pdev, struct 
emac_adapter *adpt)
        res = platform_get_resource(sgmii_pdev, IORESOURCE_MEM, 1);
        if (res) {
                phy->digital = ioremap(res->start, resource_size(res));
-               if (IS_ERR(phy->digital)) {
-                       ret = PTR_ERR(phy->digital);
+               if (!phy->digital) {
+                       ret = -ENOMEM;
                        goto error_unmap_base;
                }
        }

Reply via email to