git: 7dffa9db4516 - stable/14 - smbios: Print an error on unexpected entry point length on identify

From: Olivier Certner <olce_at_FreeBSD.org>
Date: Tue, 08 Apr 2025 13:40:54 UTC
The branch stable/14 has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=7dffa9db45169e5e54d6fa6024733a5e6740a5a2

commit 7dffa9db45169e5e54d6fa6024733a5e6740a5a2
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2025-03-03 10:12:33 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2025-04-08 13:38:24 +0000

    smbios: Print an error on unexpected entry point length on identify
    
    This helps figuring out quickly why no SMBIOS device appears in this case.
    
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit fdf08ac1e9f9baac4fcf4af8f3bf7a34d3ea0009)
---
 sys/dev/smbios/smbios.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/sys/dev/smbios/smbios.c b/sys/dev/smbios/smbios.c
index f2c1dffad033..4a5305ea80c0 100644
--- a/sys/dev/smbios/smbios.c
+++ b/sys/dev/smbios/smbios.c
@@ -87,7 +87,7 @@ smbios_identify (driver_t *driver, device_t parent)
 	device_t child;
 	vm_paddr_t addr = 0;
 	size_t map_size = sizeof(*eps);
-	int length;
+	uint8_t length;
 
 	if (!device_is_alive(parent))
 		return;
@@ -149,8 +149,13 @@ smbios_identify (driver_t *driver, device_t parent)
 		if (length == 0x1e && map_size == sizeof(*eps) &&
 		    eps->major_version == 2 && eps->minor_version == 1)
 			length = map_size;
-		else
+		else {
+			printf("smbios: %s-bit Entry Point: Invalid length: "
+			    "Got %hhu, expected %zu\n",
+			    map_size == sizeof(*eps3) ? "64" : "32",
+			    length, map_size);
 			goto unmap_return;
+		}
 	}
 
 	child = BUS_ADD_CHILD(parent, 5, "smbios", -1);