diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2023-10-27 20:18:34 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2023-10-27 20:18:34 +0200 | 
| commit | f4febfdbb45ad2322a508d3d650b3af7c8286cb2 (patch) | |
| tree | 956ff6e97a51f23774878f2a536bad2530debfcd /drivers/clocksource/timer-imx-gpt.c | |
| parent | 8ceea12d183cf29f28072dede218a04eda2a789c (diff) | |
| parent | c28ca80ba3b531a79402d61046aef83272f86b08 (diff) | |
Merge tag 'timers-v6.7-rc1' of https://git.linaro.org/people/daniel.lezcano/linux into timers/core
Pull timer driver updates from Daniel Lezcano:
  - Fix DT bindings typos, readability and wrong information about
    underflow and overflow interrupts for the RZ/G2L MTU3a driver (Biju
    Das)
  - Fix a memory leak in the error path when probing the i.MX GPT timer
    (Jacky Bai)
  - Don't use clk_get_rate() in atomic context as the function might
    sleep. Store the clock and use notifiers to receive a clocke rate
    change notification (Ivaylo Dimitrov)
  - Remove superfluous error message when platform_get_irq() fails
    because the underlying function already prints one (Yang Li)
  - Add wakeup capability flag for the risc-V ACPI timer (Sunil V L)
  - Fix initialization of the TCB timers which are in cascade as the
    second timer is reset after the first wraps up leading to
    inconsistent scheduler behavior (Ronald Wahl)
  - Add DT bindings and driver for Cirrus Logic EP93xx (Nikita Shubin)
Diffstat (limited to 'drivers/clocksource/timer-imx-gpt.c')
| -rw-r--r-- | drivers/clocksource/timer-imx-gpt.c | 18 | 
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/clocksource/timer-imx-gpt.c b/drivers/clocksource/timer-imx-gpt.c index 28ab4f1a7c71..6a878d227a13 100644 --- a/drivers/clocksource/timer-imx-gpt.c +++ b/drivers/clocksource/timer-imx-gpt.c @@ -434,12 +434,16 @@ static int __init mxc_timer_init_dt(struct device_node *np,  enum imx_gpt_type t  		return -ENOMEM;  	imxtm->base = of_iomap(np, 0); -	if (!imxtm->base) -		return -ENXIO; +	if (!imxtm->base) { +		ret = -ENXIO; +		goto err_kfree; +	}  	imxtm->irq = irq_of_parse_and_map(np, 0); -	if (imxtm->irq <= 0) -		return -EINVAL; +	if (imxtm->irq <= 0) { +		ret = -EINVAL; +		goto err_kfree; +	}  	imxtm->clk_ipg = of_clk_get_by_name(np, "ipg"); @@ -452,11 +456,15 @@ static int __init mxc_timer_init_dt(struct device_node *np,  enum imx_gpt_type t  	ret = _mxc_timer_init(imxtm);  	if (ret) -		return ret; +		goto err_kfree;  	initialized = 1;  	return 0; + +err_kfree: +	kfree(imxtm); +	return ret;  }  static int __init imx1_timer_init_dt(struct device_node *np)  | 
