Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: dongxuyang@eswincomputing.com
Cc: conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v13 5/5] clocksource: dw_apb_timer: Use reset array API to handle all resets
Date: Fri, 24 Jul 2026 08:55:27 +0000	[thread overview]
Message-ID: <20260724085527.D31BC1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260724084437.1850-1-dongxuyang@eswincomputing.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The patch dynamically allocates an exclusive reset control array using the unmanaged `of_` API but fails to free it, permanently locking shared APB resets and deadlocking other devices.
--

--- Patch [5]: [PATCH v13 5/5] clocksource: dw_apb_timer: Use reset array API to handle all resets ---
commit 015418d722b66a454000fd7a9c2606bea3f7e18b
Author: Xuyang Dong <dongxuyang@eswincomputing.com>

clocksource: dw_apb_timer: Use reset array API to handle all resets

This patch updates the timer initialization to fetch and pulse all reset lines
specified in the device tree by switching to the reset array API.

> Replace it with devm_reset_control_array_get_optional_exclusive() to
> fetch and control all reset lines listed in the device tree, ensuring
> every line is properly asserted and deasserted rather than only the first.

[Severity: Low]
This isn't a bug, but the commit message mentions using the managed
devm_reset_control_array_get_optional_exclusive function, while the code
below actually uses the unmanaged of_reset_control_array_get_optional_exclusive
function.

> diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c
> --- a/drivers/clocksource/dw_apb_timer_of.c
> +++ b/drivers/clocksource/dw_apb_timer_of.c
[ ... ]
> @@ -29,9 +29,11 @@ static int __init timer_get_base_and_rate(struct device_node *np,
>  	/*
>  	 * Reset the timer if the reset control is available, wiping
> -	 * out the state the firmware may have left it
> +	 * out the state the firmware may have left it.
> +	 * Use array variant to handle multiple resets (e.g., timer
> +	 * and APB interface resets) if specified in the device tree.
>  	 */
> -	rstc = of_reset_control_get(np, NULL);
> +	rstc = of_reset_control_array_get_optional_exclusive(np);
>  	if (!IS_ERR(rstc)) {
>  		reset_control_assert(rstc);
>  		reset_control_deassert(rstc);
>  	}

[Severity: High]
Does this code leak the exclusive reset control array?

Since of_reset_control_array_get_optional_exclusive is used instead of the
managed devm variant, the returned rstc needs to be manually freed.

Because this API acquires exclusive references to the resets (which the
comment notes might include shared APB interface resets), exiting
timer_get_base_and_rate without calling reset_control_put(rstc) leaves
these resets permanently locked.

Could this prevent other devices on the bus from acquiring their shared
resets during probe by returning -EBUSY?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260724084153.1473-1-dongxuyang@eswincomputing.com?part=5

      reply	other threads:[~2026-07-24  8:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24  8:41 [PATCH v13 0/5] Update designware pwm driver dongxuyang
2026-07-24  8:43 ` [PATCH v13 1/5] dt-bindings: pwm: dwc: Document optional resets property dongxuyang
2026-07-24  8:53   ` sashiko-bot
2026-07-24  8:43 ` [PATCH v13 2/5] dt-bindings: pwm: dwc: Add eswin compatible dongxuyang
2026-07-24  8:56   ` sashiko-bot
2026-07-24  8:43 ` [PATCH v13 3/5] pwm: dwc: add of/platform support dongxuyang
2026-07-24  8:57   ` sashiko-bot
2026-07-24  8:44 ` [PATCH v13 4/5] dt-bindings: timer: dwc: Update resets property items dongxuyang
2026-07-24  8:55   ` sashiko-bot
2026-07-24 13:55     ` Rob Herring
2026-07-24  8:44 ` [PATCH v13 5/5] clocksource: dw_apb_timer: Use reset array API to handle all resets dongxuyang
2026-07-24  8:55   ` sashiko-bot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260724085527.D31BC1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dongxuyang@eswincomputing.com \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox