Messages in this thread Patch in this message | | | From | Arvind Yadav <> | Subject | [PATCH] clocksource: vf_pit_timer: Unmap region obtained by of_iomap | Date | Wed, 21 Sep 2016 20:59:34 +0530 |
| |
Free memory mapping, if pit_timer_init is not successful.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com> --- drivers/clocksource/vf_pit_timer.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/clocksource/vf_pit_timer.c b/drivers/clocksource/vf_pit_timer.c index 55d8d84..1c345d7 100644 --- a/drivers/clocksource/vf_pit_timer.c +++ b/drivers/clocksource/vf_pit_timer.c @@ -178,16 +178,20 @@ static int __init pit_timer_init(struct device_node *np) clkevt_base = timer_base + PITn_OFFSET(3); irq = irq_of_parse_and_map(np, 0); - if (irq <= 0) - return -EINVAL; + if (irq <= 0) { + ret = -EINVAL; + goto iounmap; + } pit_clk = of_clk_get(np, 0); - if (IS_ERR(pit_clk)) - return PTR_ERR(pit_clk); + if (IS_ERR(pit_clk)) { + ret = PTR_ERR(pit_clk); + goto iounmap; + } ret = clk_prepare_enable(pit_clk); if (ret) - return ret; + goto iounmap; clk_rate = clk_get_rate(pit_clk); cycle_per_jiffy = clk_rate / (HZ); @@ -197,8 +201,12 @@ static int __init pit_timer_init(struct device_node *np) ret = pit_clocksource_init(clk_rate); if (ret) - return ret; + goto iounmap; return pit_clockevent_init(clk_rate, irq); + +iounmap: + iounmap(timer_base); + return ret; } CLOCKSOURCE_OF_DECLARE(vf610, "fsl,vf610-pit", pit_timer_init); -- 2.7.4
| |