From: Jonathan Cavitt Date: Thu, 16 Apr 2026 21:00:47 +0000 (+0800) Subject: drm/auth: Only drm_drop_master if it exists X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a9f1d470619a7b0c0bdee564d312bb1424dfe01;p=thirdparty%2Fkernel%2Flinux.git drm/auth: Only drm_drop_master if it exists 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 Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Acked-by: Luben Tuikov Reviewed-by: Maciej Patelczyk Link: https://patch.msgid.link/20260416210047.3904106-1-jonathan.cavitt@intel.com --- diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c index e17bb0f1f9e0b..e5013b870ba06 100644 --- a/drivers/gpu/drm/drm_auth.c +++ b/drivers/gpu/drm/drm_auth.c @@ -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) {