Commit a566059d authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller

net: dsa: bcm_sf2: fix unmapping registers in case of errors

In case we fail to ioremap() one of our registers, we would be leaking
existing mappings, unwind those accordingly on errors.

Fixes: 246d7f77 ("net: dsa: add Broadcom SF2 switch driver")
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a620a6bc
...@@ -404,7 +404,8 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds) ...@@ -404,7 +404,8 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds)
*base = of_iomap(dn, i); *base = of_iomap(dn, i);
if (*base == NULL) { if (*base == NULL) {
pr_err("unable to find register: %s\n", reg_names[i]); pr_err("unable to find register: %s\n", reg_names[i]);
return -ENODEV; ret = -ENOMEM;
goto out_unmap;
} }
base++; base++;
} }
...@@ -484,6 +485,7 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds) ...@@ -484,6 +485,7 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds)
out_unmap: out_unmap:
base = &priv->core; base = &priv->core;
for (i = 0; i < BCM_SF2_REGS_NUM; i++) { for (i = 0; i < BCM_SF2_REGS_NUM; i++) {
if (*base)
iounmap(*base); iounmap(*base);
base++; base++;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment