⬢ DragonFlyBSD Kernel Audit
DF-3899 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/i915/intel_dpll_mgr.c b/sys/dev/drm/i915/intel_dpll_mgr.c
index e8495949..cbc23251 100644
--- a/sys/dev/drm/i915/intel_dpll_mgr.c
+++ b/sys/dev/drm/i915/intel_dpll_mgr.c
@@ -100,11 +100,12 @@ enum intel_dpll_id
 intel_get_shared_dpll_id(struct drm_i915_private *dev_priv,
 			 struct intel_shared_dpll *pll)
 {
-	if (WARN_ON(pll < dev_priv->shared_dplls||
-		    pll > &dev_priv->shared_dplls[dev_priv->num_shared_dpll]))
+	long pll_idx = pll - dev_priv->shared_dplls;
+
+	if (WARN_ON(pll_idx < 0 || pll_idx >= dev_priv->num_shared_dpll))
 		return -1;
 
-	return (enum intel_dpll_id) (pll - dev_priv->shared_dplls);
+	return (enum intel_dpll_id) pll_idx;
 }
 
 /* For ILK+ */