⬢ DragonFlyBSD Kernel Audit
DF-3891 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/amdgpu/kv_dpm.c
+++ b/sys/dev/drm/amd/amdgpu/kv_dpm.c
@@ -2747,7 +2747,9 @@
 			&non_clock_info_array->nonClockInfo[non_clock_array_index];
 		ps = kzalloc(sizeof(struct kv_ps), GFP_KERNEL);
 		if (ps == NULL) {
-			kfree(adev->pm.dpm.ps);
+			/* let kv_dpm_fini free the array and the
+			 * already-parsed ps_priv states exactly once */
+			adev->pm.dpm.num_ps = i;
 			return -ENOMEM;
 		}
 		adev->pm.dpm.ps[i].ps_priv = ps;