Re: [PATCH 1/3] ACPI: fix incorrect counts returned by acpi_parse_entries_array()

From: Rafael J. Wysocki
Date: Fri Jul 01 2016 - 17:26:20 EST


On Fri, Jul 1, 2016 at 11:21 PM, Al Stone <ahs3@xxxxxxxxxx> wrote:
> The static function acpi_parse_entries_array() is provided an array of
> type struct acpi_subtable_proc that has a callback function and a count.
> The count should reflect how many times the callback has been successfully
> called. However, the current code only increments the 0th element of the
> array, regardless of the number of entries in the array, or which callback
> has been invoked. The fix is to use the index into the array, instead of
> a pointer to the beginning of the array.

OK, so it would be good to say what the consequences of the problem are too.

> Signed-off-by: Al Stone <ahs3@xxxxxxxxxx>
> Cc: Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>
> Cc: Len Brown <lenb@xxxxxxxxxx>
> ---
> drivers/acpi/tables.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
> index 9f0ad6e..3e167b4 100644
> --- a/drivers/acpi/tables.c
> +++ b/drivers/acpi/tables.c
> @@ -281,7 +281,7 @@ acpi_parse_entries_array(char *id, unsigned long table_size,
> proc[i].handler(entry, table_end))
> return -EINVAL;
>
> - proc->count++;
> + proc[i].count++;
> break;
> }
> if (i != proc_num)
> @@ -416,7 +416,7 @@ int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler)
> return -ENODEV;
> }
>
> -/*
> +/*
> * The BIOS is supposed to supply a single APIC/MADT,
> * but some report two. Provide a knob to use either.
> * (don't you wish instance 0 and 1 were not the same?)
> --
> 2.7.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html