Re: [PATCH 1/2] usb: typec: ucsi: displayport: Fix deadlock

From: Heikki Krogerus
Date: Thu Apr 10 2025 - 03:03:47 EST


Hi Andrei,

> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -1922,6 +1922,42 @@ void ucsi_set_drvdata(struct ucsi *ucsi, void *data)
> }
> EXPORT_SYMBOL_GPL(ucsi_set_drvdata);
>
> +/**
> + * ucsi_con_mutex_lock - Acquire the connector mutex
> + * @con: The connector interface to lock
> + *
> + * Returns true on success, false if the connector is disconnected
> + */
> +bool ucsi_con_mutex_lock(struct ucsi_connector *con)
> +{
> + bool mutex_locked = false;
> + bool connected = true;
> +
> + while (connected && !mutex_locked) {
> + mutex_locked = mutex_trylock(&con->lock) != 0;
> + connected = UCSI_CONSTAT(con, CONNECTED);
> + if (connected && !mutex_locked)
> + msleep(20);
> + }
> +
> + connected = connected && con->partner;
> + if (!connected && mutex_locked)
> + mutex_unlock(&con->lock);
> +
> + return connected;
> +}
> +EXPORT_SYMBOL_GPL(ucsi_con_mutex_lock);
> +
> +/**
> + * ucsi_con_mutex_unlock - Release the connector mutex
> + * @con: The connector interface to unlock
> + */
> +void ucsi_con_mutex_unlock(struct ucsi_connector *con)
> +{
> + mutex_unlock(&con->lock);
> +}
> +EXPORT_SYMBOL_GPL(ucsi_con_mutex_unlock);

No need to export these.

thanks,

--
heikki