On 09/10/2025 15:16, Thomas Zimmermann wrote:
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.

Thanks, it looks good to me.

Reviewed-by: Jocelyn Falempe <[email protected]>>
Signed-off-by: Thomas Zimmermann <[email protected]>
---
  drivers/gpu/drm/clients/drm_log.c | 14 +++++++++++---
  1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/clients/drm_log.c 
b/drivers/gpu/drm/clients/drm_log.c
index 116e0ef9ae5d..470df4148e96 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, bool _console_lo
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,

Reply via email to