Check drm_mode_vrefresh return value sanity before using it in
intel_get_frame_time_us.

Signed-off-by: Jouni Högander <jouni.hogan...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 5addde63168e..8cc2314fac6f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1116,11 +1116,16 @@ transcoder_has_psr2(struct intel_display *display, enum 
transcoder cpu_transcode
 
 static u32 intel_get_frame_time_us(const struct intel_crtc_state *crtc_state)
 {
+       int vrefresh;
+
        if (!crtc_state->hw.active)
                return 0;
 
-       return DIV_ROUND_UP(1000 * 1000,
-                           drm_mode_vrefresh(&crtc_state->hw.adjusted_mode));
+       vrefresh = drm_mode_vrefresh(&crtc_state->hw.adjusted_mode);
+       if (vrefresh <= 0)
+               return 0;
+
+       return DIV_ROUND_UP(1000 * 1000, vrefresh);
 }
 
 static void psr2_program_idle_frames(struct intel_dp *intel_dp,
-- 
2.43.0

Reply via email to