DragonFlyBSD Kernel Audit
DF-1256 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/amdgpu/amdgpu_device.c b/sys/dev/drm/amd/amdgpu/amdgpu_device.c
--- a/sys/dev/drm/amd/amdgpu/amdgpu_device.c
+++ b/sys/dev/drm/amd/amdgpu/amdgpu_device.c
@@ -759,9 +759,16 @@
 			if (err)
 				return true;
 
+			if (adev->pm.fw->datasize < 280) {
+				release_firmware(adev->pm.fw);
+				adev->pm.fw = NULL;
+				return true;
+			}
 			fw_ver = *((uint32_t *)adev->pm.fw->data + 69);
 			if (fw_ver < 0x00160e00)
 				return true;
+			release_firmware(adev->pm.fw);
+			adev->pm.fw = NULL;
 		}
 	}