In error paths, add fjes_hw_iounmap() to release the resource acquired by fjes_hw_iomap().
Fixes: 8cdc3f6c5d22 ("fjes: Hardware initialization routine") Cc: stable@vger.kernel.org Signed-off-by: Haoxiang Li lihaoxiang@isrc.iscas.ac.cn --- drivers/net/fjes/fjes_hw.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fjes/fjes_hw.c b/drivers/net/fjes/fjes_hw.c index b9b5554ea862..a2e89ffa6f70 100644 --- a/drivers/net/fjes/fjes_hw.c +++ b/drivers/net/fjes/fjes_hw.c @@ -333,8 +333,10 @@ int fjes_hw_init(struct fjes_hw *hw) return -EIO;
ret = fjes_hw_reset(hw); - if (ret) + if (ret) { + fjes_hw_iounmap(hw); return ret; + }
fjes_hw_set_irqmask(hw, REG_ICTL_MASK_ALL, true);
@@ -347,8 +349,10 @@ int fjes_hw_init(struct fjes_hw *hw) hw->max_epid = fjes_hw_get_max_epid(hw); hw->my_epid = fjes_hw_get_my_epid(hw);
- if ((hw->max_epid == 0) || (hw->my_epid >= hw->max_epid)) + if ((hw->max_epid == 0) || (hw->my_epid >= hw->max_epid)) { + fjes_hw_iounmap(hw); return -ENXIO; + }
ret = fjes_hw_setup(hw);