⬢ DragonFlyBSD Kernel Audit
DF-4589 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/atombios_dp.c
+++ b/sys/dev/drm/radeon/atombios_dp.c
@@ -670,6 +670,7 @@
 	bool clock_recovery;
  	u8 voltage;
 	int i;
+	int max_loop_tries = 50;
 
 	radeon_dp_set_tp(dp_info, DP_TRAINING_PATTERN_1);
 	memset(dp_info->train_set, 0, 4);
@@ -682,6 +683,11 @@
 	dp_info->tries = 0;
 	voltage = 0xff;
 	while (1) {
+		if (max_loop_tries-- <= 0) {
+			DRM_ERROR("clock recovery exceeded max loop attempts\n");
+			break;
+		}
+
 		drm_dp_link_train_clock_recovery_delay(dp_info->dpcd);
 
 		if (drm_dp_dpcd_read_link_status(dp_info->aux,