diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2013-05-20 22:18:18 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2013-05-20 22:18:18 +0000 |
commit | b3f35be0c65ed70515d14d9441d8397a606e1554 (patch) | |
tree | 2f8186110bbe55377c7cd4fa18f238e59abf0210 /sys/dev/acpica | |
parent | ec23b5bfe7e036cfe7b732a107379dfcfbf29801 (diff) | |
download | src-b3f35be0c65ed70515d14d9441d8397a606e1554.tar.gz src-b3f35be0c65ed70515d14d9441d8397a606e1554.zip |
- 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.
Notes
Notes:
svn path=/head/; revision=250834
Diffstat (limited to 'sys/dev/acpica')
-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 f9f60df8799e..8e8fe47af87a 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); } |