[PATCH 2/4] drm/log: Do not hold lock across drm_client_release()
Jocelyn Falempe
jfalempe at redhat.com
Wed Oct 15 00:52:36 PDT 2025
On 09/10/2025 15:16, Thomas Zimmermann wrote:
> When calling drm_client_release(), the client is already quiescent.
> Internal locks should therefore be dropped before the caller releases
> the client.
>
> In the case of the DRM log, concurrency originates from the console or
> from client events. The console has been unregistered in the previous
> line. The caller of the unregister callback, drm_log_client_unregister(),
> holds clientlist_mutex from struct drm_device to protect against concurrent
> client events. It is therefore safe to release the client without holding
> locks.
Thanks, I agree, it should be safe to move drm_client_release() after
the lock.
Reviewed-by: Jocelyn Falempe <jfalempe at redhat.com>>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> drivers/gpu/drm/clients/drm_log.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/clients/drm_log.c b/drivers/gpu/drm/clients/drm_log.c
> index d239f1e3c456..116e0ef9ae5d 100644
> --- a/drivers/gpu/drm/clients/drm_log.c
> +++ b/drivers/gpu/drm/clients/drm_log.c
> @@ -302,8 +302,8 @@ static void drm_log_client_unregister(struct drm_client_dev *client)
>
> mutex_lock(&dlog->lock);
> drm_log_free_scanout(client);
> - drm_client_release(client);
> mutex_unlock(&dlog->lock);
> + drm_client_release(client);
> kfree(dlog);
> drm_dbg(dev, "Unregistered with drm log\n");
> }
More information about the linux-arm-kernel
mailing list