Greetings,


I was reviewing the ACPI construction for PVH and discovered what I believe is 
a flaw in the logic for selecting the XSDT tables. The current logic is,



static bool __init pvh_acpi_xsdt_table_allowed(const char *sig,

                                               unsigned long address,

                                               unsigned long size)

{

    /*

     * DSDT and FACS are pointed to from FADT and thus don't belong

     * in XSDT.

     */

    return (pvh_acpi_table_allowed(sig, address, size) &&

            strncmp(sig, ACPI_SIG_DSDT, ACPI_NAME_SIZE) &&

            strncmp(sig, ACPI_SIG_FACS, ACPI_NAME_SIZE));

}



Unless I am mistaken, the boolean logic in the return statement will always 
return false resulting in an empty XSDT table. I believe based on the comment 
what was intended here was,



    return (pvh_acpi_table_allowed(sig, address, size) &&

            !(strncmp(sig, ACPI_SIG_DSDT, ACPI_NAME_SIZE) ||

              strncmp(sig, ACPI_SIG_FACS, ACPI_NAME_SIZE)));



Thanks!


V/r,

Daniel P. Smith

Apertus Solutions, LLC

Reply via email to