⬢ DragonFlyBSD Kernel Audit
DF-3942 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/dc/bios/bios_parser.c	2026-09-17 02:41:13.629587968 +0000
+++ b/sys/dev/drm/amd/display/dc/bios/bios_parser.c
@@ -1041,6 +1041,9 @@
 	header = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V2,
 		DATA_TABLES(ASIC_InternalSS_Info));
 
+	if (!header)
+		return result;
+
 	memset(info, 0, sizeof(struct spread_spectrum_info));
 
 	tbl_size = (le16_to_cpu(header->sHeader.usStructureSize)
@@ -1113,6 +1116,9 @@
 
 	tbl = GET_IMAGE(ATOM_SPREAD_SPECTRUM_INFO, DATA_TABLES(SS_Info));
 
+	if (!tbl)
+		return result;
+
 	if (1 != revision.major || 2 > revision.minor)
 		return result;
 
@@ -1645,6 +1651,9 @@
 	tbl = GET_IMAGE(ATOM_SPREAD_SPECTRUM_INFO,
 			DATA_TABLES(SS_Info));
 
+	if (!tbl)
+		return number;
+
 	if (1 != revision.major || 2 > revision.minor)
 		return number;
 
@@ -1723,6 +1732,9 @@
 	header_include = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V2,
 			DATA_TABLES(ASIC_InternalSS_Info));
 
+	if (!header_include)
+		return 0;
+
 	size = (le16_to_cpu(header_include->sHeader.usStructureSize)
 			- sizeof(ATOM_COMMON_TABLE_HEADER))
 						/ sizeof(ATOM_ASIC_SS_ASSIGNMENT_V2);
@@ -1758,6 +1770,10 @@
 
 	header_include = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V3,
 			DATA_TABLES(ASIC_InternalSS_Info));
+
+	if (!header_include)
+		return number;
+
 	size = (le16_to_cpu(header_include->sHeader.usStructureSize) -
 			sizeof(ATOM_COMMON_TABLE_HEADER)) /
 					sizeof(ATOM_ASIC_SS_ASSIGNMENT_V3);