diff options
author | jkim <jkim@FreeBSD.org> | 2013-05-20 22:18:18 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2013-05-20 22:18:18 +0000 |
commit | 51db6f82a1c3b46a9bf9d9d45d5be0caef8455a5 (patch) | |
tree | 2f8186110bbe55377c7cd4fa18f238e59abf0210 /sys/dev | |
parent | 4a97d198fc8547636cd80af59a68bd3a7290deb2 (diff) | |
download | FreeBSD-src-51db6f82a1c3b46a9bf9d9d45d5be0caef8455a5.zip FreeBSD-src-51db6f82a1c3b46a9bf9d9d45d5be0caef8455a5.tar.gz |
- 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.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/acpica/Osd/OsdTable.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sys/dev/acpica/Osd/OsdTable.c b/sys/dev/acpica/Osd/OsdTable.c index f9f60df..8e8fe47 100644 --- a/sys/dev/acpica/Osd/OsdTable.c +++ b/sys/dev/acpica/Osd/OsdTable.c @@ -54,8 +54,8 @@ AcpiOsPredefinedOverride(const ACPI_PREDEFINED_NAMES *InitVal, 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 *ExistingTable, 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); } |