⬢ DragonFlyBSD Kernel Audit
DF-3734 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/radeon/r600.c b/sys/dev/drm/radeon/r600.c
index 1111111..2222222 100644
--- a/sys/dev/drm/radeon/r600.c
+++ b/sys/dev/drm/radeon/r600.c
@@ -480,11 +480,15 @@ void r600_pm_get_dynpm_state(struct radeon_device *rdev)
 			/* don't use the power state if crtcs are active and no display flag is set */
 			if ((rdev->pm.active_crtc_count > 0) &&
 			    (rdev->pm.power_state[rdev->pm.requested_power_state_index].
 			     clock_info[rdev->pm.requested_clock_mode_index].flags &
 			     RADEON_PM_MODE_NO_DISPLAY)) {
-				rdev->pm.requested_clock_mode_index++;
+				if (rdev->pm.requested_clock_mode_index + 1 <
+				    rdev->pm.power_state[rdev->pm.requested_power_state_index].
+				    num_clock_modes)
+					rdev->pm.requested_clock_mode_index++;
 			}
 			break;
 		case DYNPM_ACTION_UPCLOCK:
 			if (rdev->pm.requested_power_state_index == rdev->pm.current_power_state_index) {