]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/log: Add free callback
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 9 Oct 2025 13:16:30 +0000 (15:16 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 24 Oct 2025 06:45:37 +0000 (08:45 +0200)
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
drivers/gpu/drm/clients/drm_log.c

index d040be2e9d7a0876c4712facd5cc504efe67be51..24b08fdcb57acbdacd421d7a99f00d1d8d6a506f 100644 (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,