drm/i915: Fix locking in DRRS debugfs
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 3 Oct 2022 11:32:47 +0000 (14:32 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 3 Oct 2022 15:50:14 +0000 (18:50 +0300)
Grab the crtc mutex so that looking at the crtc state is
actually safe.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221003113249.16213-5-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_drrs.c

index a5d6682..2b94a62 100644 (file)
@@ -301,8 +301,14 @@ void intel_crtc_drrs_init(struct intel_crtc *crtc)
 static int intel_drrs_debugfs_status_show(struct seq_file *m, void *unused)
 {
        struct intel_crtc *crtc = m->private;
-       const struct intel_crtc_state *crtc_state =
-               to_intel_crtc_state(crtc->base.state);
+       const struct intel_crtc_state *crtc_state;
+       int ret;
+
+       ret = drm_modeset_lock_single_interruptible(&crtc->base.mutex);
+       if (ret)
+               return ret;
+
+       crtc_state = to_intel_crtc_state(crtc->base.state);
 
        mutex_lock(&crtc->drrs.mutex);
 
@@ -321,6 +327,8 @@ static int intel_drrs_debugfs_status_show(struct seq_file *m, void *unused)
 
        mutex_unlock(&crtc->drrs.mutex);
 
+       drm_modeset_unlock(&crtc->base.mutex);
+
        return 0;
 }