Jelajahi Sumber

drm/i915: fix a sprite watermark computation to avoid divide by zero if xpos<0

When setting overlay position with x<0, it will divide 0 and make drm
driver crash.

Signed-off-by: Hai Lan <hai.lan@intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Hai Lan 13 tahun lalu
induk
melakukan
4e9bb47bd2
1 mengubah file dengan 9 tambahan dan 0 penghapusan
  1. 9 0
      drivers/gpu/drm/i915/intel_display.c

+ 9 - 0
drivers/gpu/drm/i915/intel_display.c

@@ -4680,8 +4680,17 @@ sandybridge_compute_sprite_srwm(struct drm_device *dev, int plane,
 
 	crtc = intel_get_crtc_for_plane(dev, plane);
 	clock = crtc->mode.clock;
+	if (!clock) {
+		*sprite_wm = 0;
+		return false;
+	}
 
 	line_time_us = (sprite_width * 1000) / clock;
+	if (!line_time_us) {
+		*sprite_wm = 0;
+		return false;
+	}
+
 	line_count = (latency_ns / line_time_us + 1000) / 1000;
 	line_size = sprite_width * pixel_size;