fwts: 32 bit ACPI table pointers break when running on 64 architectures

Bug #736874 reported by Colin Ian King on 2011-03-17
This bug affects 1 person
Affects Status Importance Assigned to Milestone
fwts (Ubuntu)
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)
Colin Ian King (colin-king) wrote :

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!

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package fwts - 0.22.08

fwts (0.22.08) natty; urgency=low

  * fix segfault of method test on 64 bit machines (LP: #736874)
 -- Colin King <email address hidden> Thu, 17 Mar 2011 14:13:12 +0000

Changed in fwts (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers