⬢ DragonFlyBSD Kernel Audit
DF-3627 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/i915/intel_dp.c
+++ b/sys/dev/drm/i915/intel_dp.c
@@ -3946,16 +3946,19 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp)
 	/* Read the eDP 1.4+ supported link rates. */
 	if (intel_dp->edp_dpcd[0] >= DP_EDP_14) {
 		__le16 sink_rates[DP_MAX_SUPPORTED_RATES];
 		int i;
 
-		drm_dp_dpcd_read(&intel_dp->aux, DP_SUPPORTED_LINK_RATES,
-				sink_rates, sizeof(sink_rates));
+		if (drm_dp_dpcd_read(&intel_dp->aux, DP_SUPPORTED_LINK_RATES,
+				     sink_rates, sizeof(sink_rates)) !=
+		    sizeof(sink_rates))
+			memset(sink_rates, 0, sizeof(sink_rates));
 
 		for (i = 0; i < ARRAY_SIZE(sink_rates); i++) {
 			int val = le16_to_cpu(sink_rates[i]);
 
 			if (val == 0)
 				break;
 
 			/* Value read multiplied by 200kHz gives the per-lane