svn commit: r281505 - in stable: 10/usr.sbin/acpi/acpidump 8/usr.sbin/acpi/acpidump 9/usr.sbin/acpi/acpidump
Jung-uk Kim
jkim at FreeBSD.org
Mon Apr 13 22:22:35 UTC 2015
Author: jkim
Date: Mon Apr 13 22:22:32 2015
New Revision: 281505
URL: https://svnweb.freebsd.org/changeset/base/281505
Log:
MFC: r281331
Do not crash when RSDT/XSDT contains an empty entry.
Modified:
stable/9/usr.sbin/acpi/acpidump/acpi.c
Directory Properties:
stable/9/usr.sbin/acpi/acpidump/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/10/usr.sbin/acpi/acpidump/acpi.c
stable/8/usr.sbin/acpi/acpidump/acpi.c
Directory Properties:
stable/10/ (props changed)
stable/8/usr.sbin/acpi/acpidump/ (props changed)
Modified: stable/9/usr.sbin/acpi/acpidump/acpi.c
==============================================================================
--- stable/9/usr.sbin/acpi/acpidump/acpi.c Mon Apr 13 21:33:49 2015 (r281504)
+++ stable/9/usr.sbin/acpi/acpidump/acpi.c Mon Apr 13 22:22:32 2015 (r281505)
@@ -818,17 +818,10 @@ acpi_print_rsdt(ACPI_TABLE_HEADER *rsdp)
for (i = 0; i < entries; i++) {
if (i > 0)
printf(", ");
- switch (addr_size) {
- case 4:
+ if (addr_size == 4)
addr = le32toh(rsdt->TableOffsetEntry[i]);
- break;
- case 8:
+ else
addr = le64toh(xsdt->TableOffsetEntry[i]);
- break;
- default:
- addr = 0;
- }
- assert(addr != 0);
printf("0x%08lx", addr);
}
printf(" }\n");
@@ -1085,17 +1078,12 @@ acpi_handle_rsdt(ACPI_TABLE_HEADER *rsdp
xsdt = (ACPI_TABLE_XSDT *)rsdp;
entries = (rsdp->Length - sizeof(ACPI_TABLE_HEADER)) / addr_size;
for (i = 0; i < entries; i++) {
- switch (addr_size) {
- case 4:
+ if (addr_size == 4)
addr = le32toh(rsdt->TableOffsetEntry[i]);
- break;
- case 8:
+ else
addr = le64toh(xsdt->TableOffsetEntry[i]);
- break;
- default:
- assert((addr = 0));
- }
-
+ if (addr == 0)
+ continue;
sdp = (ACPI_TABLE_HEADER *)acpi_map_sdt(addr);
if (acpi_checksum(sdp, sdp->Length)) {
warnx("RSDT entry %d (sig %.4s) is corrupt", i,
@@ -1288,16 +1276,12 @@ sdt_from_rsdt(ACPI_TABLE_HEADER *rsdp, c
xsdt = (ACPI_TABLE_XSDT *)rsdp;
entries = (rsdp->Length - sizeof(ACPI_TABLE_HEADER)) / addr_size;
for (i = 0; i < entries; i++) {
- switch (addr_size) {
- case 4:
+ if (addr_size == 4)
addr = le32toh(rsdt->TableOffsetEntry[i]);
- break;
- case 8:
+ else
addr = le64toh(xsdt->TableOffsetEntry[i]);
- break;
- default:
- assert((addr = 0));
- }
+ if (addr == 0)
+ continue;
sdt = (ACPI_TABLE_HEADER *)acpi_map_sdt(addr);
if (last != NULL) {
if (sdt == last)
More information about the svn-src-stable-9
mailing list