Re: [PATCH v2 2/2] reset: Fix circular locking dependency in reset_controller_unregister()

From: Philipp Zabel

Date: Thu Nov 05 2026 - 06:05:17 EST


On Do, 2026-11-05 at 00:20 +0800, Tzung-Bi Shih wrote:
> reset_control_acquire() and reset_control_put_internal() acquire
> `rcdev->lock` inside the `rstc->srcu` read-side critical section
> (`rstc->srcu` -> `rcdev->lock`).
>
> However, reset_controller_unregister() holds `rcdev->lock` while calling
> synchronize_srcu(&rstc->srcu) (`rcdev->lock` -> `rstc->srcu`), causing a
> lockdep circular locking dependency warning and a potential ABBA
> deadlock.
>
> Run synchronize_srcu() outside `rcdev->lock`.
>
> Fixes: 44a0acb2caca ("reset: protect struct reset_controller_dev with its own mutex")
> Signed-off-by: Tzung-Bi Shih <tzungbi@xxxxxxxxxx>

Reviewed-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>

regards
Philipp