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 <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>>
Link: https://lore.kernel.org/r/20251009132006.45834-4-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann 2025-10-09 15:16:30 +02:00
parent 33ba21e9e1
commit 52a0233916

View File

@ -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,