]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/auth: Only drm_drop_master if it exists
authorJonathan Cavitt <jonathan.cavitt@intel.com>
Thu, 16 Apr 2026 21:00:47 +0000 (05:00 +0800)
committerJonathan Cavitt <jonathan.cavitt@intel.com>
Tue, 21 Apr 2026 14:05:51 +0000 (22:05 +0800)
It is possible that both dev->master and file_priv->master are NULL when
passed to drm_master_release, which would result in dev being passed to
drm_drop_master (as NULL == NULL here).  This would result in a NULL
pointer dereference when passing dev->master to drm_master_put in
drm_drop_master.

Only call drm_drop_master if dev->master exists.  Also, make sure the
original calling requirement is maintained (dev->master ==
file_priv->master).

This fixes a static analysis issue.

Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Acked-by: Luben Tuikov <ltuikov89@gmail.com>
Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Link: https://patch.msgid.link/20260416210047.3904106-1-jonathan.cavitt@intel.com
drivers/gpu/drm/drm_auth.c

index e17bb0f1f9e0bbce4bb0c2106c484642f74df2b0..e5013b870ba067c1a436d4b7669a28f2fd1a2de3 100644 (file)
@@ -347,7 +347,7 @@ void drm_master_release(struct drm_file *file_priv)
        if (!drm_is_current_master_locked(file_priv))
                goto out;
 
-       if (dev->master == file_priv->master)
+       if (dev->master && dev->master == file_priv->master)
                drm_drop_master(dev, file_priv);
 out:
        if (drm_core_check_feature(dev, DRIVER_MODESET) && file_priv->is_master) {