DragonFlyBSD Kernel Audit
DF-1815 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/powerplay/hwmgr/ppatomfwctrl.c b/sys/dev/drm/amd/powerplay/hwmgr/ppatomfwctrl.c
--- a/sys/dev/drm/amd/powerplay/hwmgr/ppatomfwctrl.c
+++ b/sys/dev/drm/amd/powerplay/hwmgr/ppatomfwctrl.c
@@ -32,6 +32,7 @@
 {
 	unsigned int size = le16_to_cpu(
 			voltage_object_info_table->table_header.structuresize);
+	unsigned int obj_size;
 	unsigned int offset =
 			offsetof(struct atom_voltage_objects_info_v4_1, voltage_object[0]);
 	unsigned long start = (unsigned long)voltage_object_info_table;
@@ -44,7 +45,10 @@
 		    voltage_mode == voltage_object->gpio_voltage_obj.header.voltage_mode)
 			return voltage_object;
 
-		offset += le16_to_cpu(voltage_object->gpio_voltage_obj.header.object_size);
+		obj_size = le16_to_cpu(voltage_object->gpio_voltage_obj.header.object_size);
+		if (obj_size == 0)
+			break;
+		offset += obj_size;
 
 	}