svn commit: r250834 - head/sys/dev/acpica/Osd

Jung-uk Kim jkim at FreeBSD.org
Mon May 20 22:18:18 UTC 2013


Author: jkim
Date: Mon May 20 22:18:18 2013
New Revision: 250834
URL: http://svnweb.freebsd.org/changeset/base/250834

Log:
  - Prefer ACPI_COMPARE_NAME(a, b) macro over strncmp(a, b, ACPI_NAME_SIZE).
  - Make sure the predefined name is a string type.
  - Return slightly more useful errors.

Modified:
  head/sys/dev/acpica/Osd/OsdTable.c

Modified: head/sys/dev/acpica/Osd/OsdTable.c
==============================================================================
--- head/sys/dev/acpica/Osd/OsdTable.c	Mon May 20 22:10:01 2013	(r250833)
+++ head/sys/dev/acpica/Osd/OsdTable.c	Mon May 20 22:18:18 2013	(r250834)
@@ -54,8 +54,8 @@ AcpiOsPredefinedOverride(const ACPI_PRED
 		return (AE_BAD_PARAMETER);
 
 	*NewVal = NULL;
-	if (strncmp(InitVal->Name, "_OS_", ACPI_NAME_SIZE) == 0 &&
-	    strlen(acpi_osname) > 0) {
+	if (ACPI_COMPARE_NAME(InitVal->Name, "_OS_") &&
+	    InitVal->Type == ACPI_TYPE_STRING && strlen(acpi_osname) > 0) {
 		printf("ACPI: Overriding _OS definition with \"%s\"\n",
 		    acpi_osname);
 		*NewVal = acpi_osname;
@@ -80,18 +80,17 @@ AcpiOsTableOverride(ACPI_TABLE_HEADER *E
 	for (int i = 0; i < ACPI_NAME_SIZE; i++)
 		modname[i + 5] = tolower(ExistingTable->Signature[i]);
 #else
-	/* If we're not overriding the DSDT, just return. */
-	if (strncmp(ExistingTable->Signature, ACPI_SIG_DSDT,
-	    ACPI_NAME_SIZE) != 0)
-		return (AE_OK);
+	if (!ACPI_COMPARE_NAME(ExistingTable->Signature, ACPI_SIG_DSDT))
+		return (AE_SUPPORT);
 #endif
 	acpi_table = preload_search_by_type(modname);
 	if (acpi_table == NULL)
-		return (AE_OK);
+		return (AE_NOT_FOUND);
 	hdr = preload_fetch_addr(acpi_table);
 	sz = preload_fetch_size(acpi_table);
-	if (hdr != NULL && sz != 0)
-		*NewTable = hdr;
+	if (hdr == NULL || sz == 0)
+		return (AE_ERROR);
+	*NewTable = hdr;
 	return (AE_OK);
 }
 


More information about the svn-src-head mailing list