DragonFlyBSD Kernel Audit
DF-1203 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/radeon/ni_dpm.c b/sys/dev/drm/radeon/ni_dpm.c
--- a/sys/dev/drm/radeon/ni_dpm.c
+++ b/sys/dev/drm/radeon/ni_dpm.c
@@ -4027,7 +4027,10 @@
 							 non_clock_info,
 							 power_info->pplib.ucNonClockSize);
 			idx = (u8 *)&power_state->v1.ucClockStateIndices[0];
-			for (j = 0; j < (power_info->pplib.ucStateEntrySize - 1); j++) {
+			for (j = 0;
+			     j < (power_info->pplib.ucStateEntrySize - 1) &&
+			     j < NISLANDS_MAX_SMC_PERFORMANCE_LEVELS_PER_SWSTATE;
+			     j++) {
 				clock_info = (union pplib_clock_info *)
 					((uint8_t*)mode_info->atom_context->bios + data_offset +
 					 le16_to_cpu(power_info->pplib.usClockInfoArrayOffset) +