Re: [PATCH v2] counter: rz-mtu3-cnt: put runtime PM ref if counter init fails
From: William Breathitt Gray
Date: Sat Oct 31 2026 - 12:29:26 EST
On Sat, Oct 31, 2026 at 10:28:13PM +0800, Li Youhong wrote:
> From: Li Youhong <liyouhong@xxxxxxxxxx>
>
> Counter enable takes a runtime PM reference before initialization but
> only puts it on disable. Drop the reference if initialization fails.
>
> Fixes: 0be8907359df ("counter: Add Renesas RZ/G2L MTU3a counter driver")
> Cc: stable@xxxxxxxxxxxxxxx
> Reviewed-by: Cosmin Tanislav <cosmin-gabriel.tanislav.xa@xxxxxxxxxxx>
> Signed-off-by: Li Youhong <liyouhong@xxxxxxxxxx>
> ---
> v2:
> - Add Cc: stable@xxxxxxxxxxxxxxx.
> - v1: https://lore.kernel.org/all/20261008020506.211566-1-dayou5941@xxxxxxx/
>
> drivers/counter/rz-mtu3-cnt.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/counter/rz-mtu3-cnt.c b/drivers/counter/rz-mtu3-cnt.c
> index 7bfb6979193c..61fbeb122851 100644
> --- a/drivers/counter/rz-mtu3-cnt.c
> +++ b/drivers/counter/rz-mtu3-cnt.c
> @@ -506,8 +506,11 @@ static int rz_mtu3_count_enable_write(struct counter_device *counter,
> if (enable) {
> pm_runtime_get_sync(counter->parent);
> ret = rz_mtu3_initialize_counter(counter, count->id);
> - if (ret == 0)
> - priv->count_is_enabled[count->id] = true;
> + if (ret < 0) {
> + pm_runtime_put(counter->parent);
> + goto exit;
> + }
> + priv->count_is_enabled[count->id] = true;
> } else {
> rz_mtu3_terminate_counter(counter, count->id);
> priv->count_is_enabled[count->id] = false;
> --
> 2.25.1
>
This patch seems similar to another we're considering for ti-eqep.[^1]
In that patch, runtime PM is managed via devm which allows us to remove
the explicit PM unwind on failures and have them implicitly handled when
the device resource is released. Should we use the same approach for
rz-mtu-cnt?
William Breathitt Gray
[^1]: https://lore.kernel.org/all/20260529095834.2561-1-sozdayvek@xxxxxxxxx/