From: Thomas Zimmermann Date: Thu, 9 Oct 2025 13:16:30 +0000 (+0200) Subject: drm/log: Add free callback X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=52a023391662f5910077b1a9043b5b5f4d2f9b7b;p=thirdparty%2Fkernel%2Flinux.git drm/log: Add free callback Free the client memory in the client free callback. Also move the debugging output into the free callback: drm_client_release() puts the reference on the DRM device, so pointers to the device should be considered dangling afterwards. Signed-off-by: Thomas Zimmermann Reviewed-by: Jocelyn Falempe > Link: https://lore.kernel.org/r/20251009132006.45834-4-tzimmermann@suse.de --- diff --git a/drivers/gpu/drm/clients/drm_log.c b/drivers/gpu/drm/clients/drm_log.c index d040be2e9d7a0..24b08fdcb57ac 100644 --- a/drivers/gpu/drm/clients/drm_log.c +++ b/drivers/gpu/drm/clients/drm_log.c @@ -293,19 +293,26 @@ static void drm_log_free_scanout(struct drm_client_dev *client) } } -static void drm_log_client_unregister(struct drm_client_dev *client) +static void drm_log_client_free(struct drm_client_dev *client) { struct drm_log *dlog = client_to_drm_log(client); struct drm_device *dev = client->dev; + kfree(dlog); + + drm_dbg(dev, "Unregistered with drm log\n"); +} + +static void drm_log_client_unregister(struct drm_client_dev *client) +{ + struct drm_log *dlog = client_to_drm_log(client); + unregister_console(&dlog->con); mutex_lock(&dlog->lock); drm_log_free_scanout(client); mutex_unlock(&dlog->lock); drm_client_release(client); - kfree(dlog); - drm_dbg(dev, "Unregistered with drm log\n"); } static int drm_log_client_hotplug(struct drm_client_dev *client) @@ -339,6 +346,7 @@ static int drm_log_client_resume(struct drm_client_dev *client) static const struct drm_client_funcs drm_log_client_funcs = { .owner = THIS_MODULE, + .free = drm_log_client_free, .unregister = drm_log_client_unregister, .hotplug = drm_log_client_hotplug, .suspend = drm_log_client_suspend,