DragonFlyBSD Kernel Audit
DF-1196 / fix.diff
← back to finding ↓ download raw
--- /tmp/orig/dev/drm/radeon/r600.c	2026-07-23 11:54:56.864833000 +0000
+++ dev/drm/radeon/r600.c	2026-07-23 11:57:17.686283000 +0000
@@ -402,7 +402,9 @@
 			    (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_power_state_index++;
+				if (rdev->pm.requested_power_state_index <
+				    rdev->pm.num_power_states - 1)
+					rdev->pm.requested_power_state_index++;
 			}
 			break;
 		case DYNPM_ACTION_UPCLOCK:
@@ -2560,6 +2562,7 @@
 		pr_err("r600_cp: Bogus length %zu in firmware \"%s\"\n",
 		       rdev->me_fw->datasize, fw_name);
 		err = -EINVAL;
+		goto out;
 	}
 
 	ksnprintf(fw_name, sizeof(fw_name), "radeonkmsfw_%s_rlc", rlc_chip_name);
@@ -2570,6 +2573,7 @@
 		pr_err("r600_rlc: Bogus length %zu in firmware \"%s\"\n",
 		       rdev->rlc_fw->datasize, fw_name);
 		err = -EINVAL;
+		goto out;
 	}
 
 	if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_HEMLOCK)) {