Re: [RFC PATCH] ACPICA: Tables: Fix regression introduced by a too early mechanism enabling

From: Dan Williams
Date: Wed Apr 26 2017 - 10:13:56 EST


On Tue, Apr 25, 2017 at 10:15 PM, Zheng, Lv <lv.zheng@xxxxxxxxx> wrote:
> Hi,
>
>> From: Dan Williams [mailto:dan.j.williams@xxxxxxxxx]
>> Subject: Re: [RFC PATCH] ACPICA: Tables: Fix regression introduced by a too early mechanism enabling
>>
>> On Tue, Apr 25, 2017 at 6:49 PM, Lv Zheng <lv.zheng@xxxxxxxxx> wrote:
>> > In the Linux kernel side, acpi_get_table() hasn't been fully balanced by
>> > acpi_put_table() invocations. So it is not a good timing to report errors.
>> > The strict balanced validation count check should only be enabled after
>> > confirming that all kernel side invocations are safe.
>>
>> We've been living with this bug for 7 years, let's just go fix all
>> acpi_get_table() invocations to make sure they have a corresponding
>> acpi_put_table().
>
> We knew that, you should have already seen a series internally or
> externally from me achieving this.
> It's done several years ago. But it takes long time to make the
> ACPICA part upstreamed.
>
> Now my plan is:
> 1. introduce the APIs but allow old usage models in order not to
> change old ACPICA behavior and its users.
> 2. fix all users
> 3. disallow old usage models.
> It's just my mistake to leak the final stage approach to the ACPICA
> upstream from my local repo.
> Now we can try to jump to the final step, but as far as I know,
> not only Linux, ACPICA itself also contains several broken cases.
>
> Bottom line of Linux kernel is we shouldn't break any running system.
> So IMO, we will need this commit during this special period.
>
> I didn't say the final step is wrong or is not required.
> We can do both in parallel.
>
> So could you please help to confirm if it's working.
> And I would like to suggest linux to take this first step fix along
> with other final step fixes during this period.

I just think "this period" is very short and we can skip the band-aid
and go straight to auditing the 48 call sites of acpi_get_table.