⬢ DragonFlyBSD Kernel Audit
DF-4124 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/rv6xx_dpm.c
+++ b/sys/dev/drm/radeon/rv6xx_dpm.c
@@ -1546,6 +1546,10 @@ int rv6xx_dpm_enable(struct radeon_device *rdev)
 	struct rv6xx_power_info *pi = rv6xx_get_pi(rdev);
 	struct radeon_ps *boot_ps = rdev->pm.dpm.boot_ps;
 
+	if (!boot_ps || !boot_ps->ps_priv)
+		return -EINVAL;
+
 	if (r600_dynamicpm_enabled(rdev))
 		return -EINVAL;
@@ -1613,6 +1617,10 @@ void rv6xx_dpm_disable(struct radeon_device *rdev)
 	struct rv6xx_power_info *pi = rv6xx_get_pi(rdev);
 	struct radeon_ps *boot_ps = rdev->pm.dpm.boot_ps;
 
+	if (!boot_ps || !boot_ps->ps_priv)
+		return;
+
 	if (!r600_dynamicpm_enabled(rdev))
 		return;
# NOTE: authored against the read-only sys/ tree after verification; never applied there.