Re: [PATCH] usb: typec: ucsi: Unregister lockdep key only after last lock use
From: Heikki Krogerus
Date: Tue Jul 21 2026 - 07:01:44 EST
On Mon, Jul 20, 2026 at 04:24:27PM +0200, Konrad Dybcio wrote:
> From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
>
> ucsi_unregister_port() starts off with taking con->lock. Fix the
> ucsi_init() teardown path to avoid unregistering the lockdep key
> associated with it right before its use.
There's already a fix for this one:
https://lore.kernel.org/linux-usb/20260717104614.325250-1-akuchynski@xxxxxxxxxxxx/
> Fixes: 7aa7d4bf9d3f ("usb: typec: ucsi: Fix race condition and ordering in port unregistration")
> Assisted-by: Codex:GPT-5.5
> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
> ---
> To: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> To: Andrei Kuchynski <akuchynski@xxxxxxxxxxxx>
> To: Benson Leung <bleung@xxxxxxxxxxxx>
> Cc: linux-usb@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Cc: usb4-upstream@xxxxxxxxxxxxxxxx
> Cc: Raghavendra Thoorpu <rthoorpu@xxxxxxxxxxxxxxxx>
> ---
> drivers/usb/typec/ucsi/ucsi.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
> index d221ca9bc88e..67c75e6bdfae 100644
> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -2142,11 +2142,12 @@ static int ucsi_init(struct ucsi *ucsi)
> return 0;
>
> err_unregister:
> + for (con = connector; con->port; con++)
> + ucsi_unregister_port(con);
> +
> for (i = 0; i < ucsi->cap.num_connectors; i++)
> lockdep_unregister_key(&connector[i].lock_key);
>
> - for (con = connector; con->port; con++)
> - ucsi_unregister_port(con);
> kfree(connector);
> err_reset:
> memset(&ucsi->cap, 0, sizeof(ucsi->cap));
Thanks,
--
heikki