From b5c72b207baaa33184b23a5a69603f981aaef0c1 Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Tue, 28 Mar 2017 17:59:02 +0300 Subject: [PATCH] drm/i915/dp: return errors from rate_to_index() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We shouldn't silently use the first element if we can't find the rate we're looking for. Make rate_to_index() more generally useful, and fallback to the first element in the caller, with a big warning. Cc: Manasi Navare Cc: Ville Syrjälä Reviewed-by: Manasi Navare Signed-off-by: Jani Nikula Link: http://patchwork.freedesktop.org/patch/msgid/8a6e83b7bf35da0cbbc703ae157944107ff145be.1490712890.git.jani.nikula@intel.com --- drivers/gpu/drm/i915/intel_dp.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 88c708b..0e200a3 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1544,9 +1544,9 @@ static int rate_to_index(const int *rates, int len, int rate) for (i = 0; i < len; i++) if (rate == rates[i]) - break; + return i; - return i; + return -1; } int @@ -1564,8 +1564,13 @@ intel_dp_max_link_rate(struct intel_dp *intel_dp) int intel_dp_rate_select(struct intel_dp *intel_dp, int rate) { - return rate_to_index(intel_dp->sink_rates, intel_dp->num_sink_rates, - rate); + int i = rate_to_index(intel_dp->sink_rates, intel_dp->num_sink_rates, + rate); + + if (WARN_ON(i < 0)) + i = 0; + + return i; } void intel_dp_compute_rate(struct intel_dp *intel_dp, int port_clock, -- 2.7.4