drm/i915: Avoid overflowing the DP link rate arrays
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 12 Mar 2015 15:10:37 +0000 (17:10 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 20 Mar 2015 10:48:09 +0000 (11:48 +0100)
Complain loudly if we ever attempt to overflow the the supported_rates[]
array. This should never happen since the sink_rates[] array will always
be smaller or of equal size. But should someone change that we want to
catch it without scribblign over the stack.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c

index c02e022ace70cb6d519ba1ce6c92a7abfeb3df7a..ff0aa6f87679d6898ebeba400a1f9b3337506aa2 100644 (file)
@@ -1203,6 +1203,8 @@ static int intersect_rates(const int *source_rates, int source_len,
 
        while (i < source_len && j < sink_len) {
                if (source_rates[i] == sink_rates[j]) {
+                       if (WARN_ON(k >= DP_MAX_SUPPORTED_RATES))
+                               return k;
                        supported_rates[k] = source_rates[i];
                        ++k;
                        ++i;