fwts: 32 bit ACPI table pointers break when running on 64 architectures
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
fwts (Ubuntu) |
Fix Released
|
Medium
|
Colin Ian King |
Bug Description
Binary package hint: fwts
An ACPI table (such as the RSDT) containing 32 bit pointers to ACPI tables in firmware causes a segfault when being processed by the ACPICA core engine (for example, running the method test) when executing fwts on a 64 bit machine.
The reason for this is that all tables are cached copies from firmware (to speed up execution and to allow for some easy pointer twiddling) using malloc(). Unfortunately on 64 bit systems these tables require a 64 bit pointer and the legacy 32 bit pointers to tables (for example in the RSDT) cannot address these.
A workaround is not to malloc() these tables but to anonymously mmap() with MAP_32BIT to ensure all tables can be 32 bit addressable.
Related branches
Changed in fwts (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Colin King (colin-king) |
A newer version 0.22.08 of the firmware test suite (fwts) tool is now available which fixes the above issue by ensuring tables used by ACPICA are allocated using a mmap() with MAP_32BIT and also checking for broken ACPI tables that may return an incorrect table size by the firmware.
New version for natty is in the PPA: at https:/ /launchpad. net/~firmware- testing- team/+archive/ scratch/ +packages
Can this be uploaded? Thanks!