All of lore.kernel.org
 help / color / mirror / Atom feed
* ACPICA regression for empty ResourceTemplates
@ 2017-06-26  8:38 Lukas Wunner
  2017-06-26 11:49 ` Rafael J. Wysocki
  0 siblings, 1 reply; 11+ messages in thread
From: Lukas Wunner @ 2017-06-26  8:38 UTC (permalink / raw)
  To: Robert Moore, Lv Zheng, Rafael J. Wysocki; +Cc: Ronald Tschalaer, linux-acpi

Hi Robert,

ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
resource descriptor handling") is causing a regression when parsing
an empty ResourceTemplate:

acpi_dev_get_resources() now returns -EIO because acpi_walk_resources()
returns AE_AML_NO_RESOURCE_END_TAG for a buffer than contains just a
lone end_tag.

The ACPI 6.1 spec, page 800 explicitly allows empty resource templates:

    ResourceTemplateTerm :=
        ResourceTemplate () {ResourceMacroList} => Buffer
    ResourceMacroList :=
        Nothing | <ResourceMacroTerm ResourceMacroList>
        ^^^^^^^

Thus a term such as "ResourceTemplate () {}" is legal and should not cause
an error to be returned.

The commit claims to revert Rafael's Linux commit 1315f01632da ("Revert
"ACPICA: Resources: Not a valid resource if buffer length too long"),
but in fact does something different.

Please fix at your earliest convenience.  The issue was discovered and
root-caused by Ronald Tschalär, please credit him in the fix, I'm merely
relaying the information:

Reported-by: Ronald Tschalär <ronald@innovation.ch>

Thanks,

Lukas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-26  8:38 ACPICA regression for empty ResourceTemplates Lukas Wunner
@ 2017-06-26 11:49 ` Rafael J. Wysocki
  2017-06-26 12:38   ` Lukas Wunner
  0 siblings, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2017-06-26 11:49 UTC (permalink / raw)
  To: Lukas Wunner
  Cc: Robert Moore, Lv Zheng, Rafael J. Wysocki, Ronald Tschalaer,
	ACPI Devel Maling List

On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> Hi Robert,
>
> ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> resource descriptor handling") is causing a regression when parsing
> an empty ResourceTemplate:

This is a linux-next commit, right?

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-26 11:49 ` Rafael J. Wysocki
@ 2017-06-26 12:38   ` Lukas Wunner
  2017-06-26 22:36     ` Rafael J. Wysocki
  2017-06-27  1:19     ` Zheng, Lv
  0 siblings, 2 replies; 11+ messages in thread
From: Lukas Wunner @ 2017-06-26 12:38 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Robert Moore, Lv Zheng, Rafael J. Wysocki, Ronald Tschalaer,
	ACPI Devel Maling List

On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> > Hi Robert,
> >
> > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> > resource descriptor handling") is causing a regression when parsing
> > an empty ResourceTemplate:
> 
> This is a linux-next commit, right?

Yes.

Lukas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-26 12:38   ` Lukas Wunner
@ 2017-06-26 22:36     ` Rafael J. Wysocki
  2017-06-27  1:19     ` Zheng, Lv
  1 sibling, 0 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2017-06-26 22:36 UTC (permalink / raw)
  To: Lukas Wunner
  Cc: Rafael J. Wysocki, Robert Moore, Lv Zheng, Rafael J. Wysocki,
	Ronald Tschalaer, ACPI Devel Maling List

On Mon, Jun 26, 2017 at 2:38 PM, Lukas Wunner <lukas@wunner.de> wrote:
> On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
>> On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
>> > Hi Robert,
>> >
>> > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
>> > resource descriptor handling") is causing a regression when parsing
>> > an empty ResourceTemplate:
>>
>> This is a linux-next commit, right?
>
> Yes.

OK, let's give Bob and Lv some time to respond.  Worst case I'll drop
it from linux-next.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: ACPICA regression for empty ResourceTemplates
  2017-06-26 12:38   ` Lukas Wunner
  2017-06-26 22:36     ` Rafael J. Wysocki
@ 2017-06-27  1:19     ` Zheng, Lv
  2017-06-27  9:24       ` Lukas Wunner
  1 sibling, 1 reply; 11+ messages in thread
From: Zheng, Lv @ 2017-06-27  1:19 UTC (permalink / raw)
  To: Lukas Wunner, Rafael J. Wysocki
  Cc: Moore, Robert, Wysocki, Rafael J, Ronald Tschalaer,
	ACPI Devel Maling List

Hi,

> -----Original Message-----
> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Lukas
> Wunner
> Sent: Monday, June 26, 2017 8:39 PM
> To: Rafael J. Wysocki <rafael@kernel.org>
> Cc: Moore, Robert <robert.moore@intel.com>; Zheng, Lv <lv.zheng@intel.com>; Wysocki, Rafael J
> <rafael.j.wysocki@intel.com>; Ronald Tschalaer <ronald@innovation.ch>; ACPI Devel Maling List <linux-
> acpi@vger.kernel.org>
> Subject: Re: ACPICA regression for empty ResourceTemplates
> 
> On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> > > Hi Robert,
> > >
> > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> > > resource descriptor handling") is causing a regression when parsing
> > > an empty ResourceTemplate:
> >
> > This is a linux-next commit, right?
> 
> Yes.

Can it be fixed by using this logic:
if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength)
Instead of the logic introduced in commit a83019eb9f1f?
if (AmlLength < sizeof (AML_RESOURCE_END_TAG))

If so, could you please offer a fix for upstream?

Thanks and best regards
Lv

> 
> Lukas
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-27  1:19     ` Zheng, Lv
@ 2017-06-27  9:24       ` Lukas Wunner
  2017-06-27 15:08         ` Moore, Robert
  2017-06-27 18:59         ` Life is hard, and then you die
  0 siblings, 2 replies; 11+ messages in thread
From: Lukas Wunner @ 2017-06-27  9:24 UTC (permalink / raw)
  To: Zheng, Lv
  Cc: Rafael J. Wysocki, Moore, Robert, Wysocki, Rafael J,
	Ronald Tschalaer, ACPI Devel Maling List

On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
> > On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> > > > Hi Robert,
> > > >
> > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> > > > resource descriptor handling") is causing a regression when parsing
> > > > an empty ResourceTemplate:
> 
> Can it be fixed by using this logic:
> if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength)
> Instead of the logic introduced in commit a83019eb9f1f?
> if (AmlLength < sizeof (AML_RESOURCE_END_TAG))

Unfortunately not, AmlLength is not 0 but 2 in this case
(= sizeof(struct aml_resource_end_tag)).


> If so, could you please offer a fix for upstream?

I'd suggest just reverting the commit, a buffer containing
a lone end tag seems to be legal according to the spec, so
returning an error seems wrong.

Thanks,

Lukas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: ACPICA regression for empty ResourceTemplates
  2017-06-27  9:24       ` Lukas Wunner
@ 2017-06-27 15:08         ` Moore, Robert
  2017-06-27 15:31           ` Rafael J. Wysocki
  2017-06-27 18:59         ` Life is hard, and then you die
  1 sibling, 1 reply; 11+ messages in thread
From: Moore, Robert @ 2017-06-27 15:08 UTC (permalink / raw)
  To: Lukas Wunner, Zheng, Lv
  Cc: Rafael J. Wysocki, Wysocki, Rafael J, Ronald Tschalaer,
	ACPI Devel Maling List



> -----Original Message-----
> From: Lukas Wunner [mailto:lukas@wunner.de]
> Sent: Tuesday, June 27, 2017 2:24 AM
> To: Zheng, Lv <lv.zheng@intel.com>
> Cc: Rafael J. Wysocki <rafael@kernel.org>; Moore, Robert
> <robert.moore@intel.com>; Wysocki, Rafael J
> <rafael.j.wysocki@intel.com>; Ronald Tschalaer <ronald@innovation.ch>;
> ACPI Devel Maling List <linux-acpi@vger.kernel.org>
> Subject: Re: ACPICA regression for empty ResourceTemplates
> 
> On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
> > > On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> > > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de>
> wrote:
> > > > > Hi Robert,
> > > > >
> > > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA:
> > > > > Update resource descriptor handling") is causing a regression
> > > > > when parsing an empty ResourceTemplate:
> >
> > Can it be fixed by using this logic:
> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength) Instead of
> > the logic introduced in commit a83019eb9f1f?
> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG))
> 
> Unfortunately not, AmlLength is not 0 but 2 in this case (=
> sizeof(struct aml_resource_end_tag)).
> 
> 
> > If so, could you please offer a fix for upstream?
[Moore, Robert] 

Is the problem seen with something like this?

    Name (BUF1, ResourceTemplate ()
    {
    })

When BUF1 is evaluated, the exception happens?

I think we have all of the ResourceTemplate issues resolved for the next release of ACPICA.
Bob



> 
> I'd suggest just reverting the commit, a buffer containing a lone end
> tag seems to be legal according to the spec, so returning an error seems
> wrong.
> 
> Thanks,
> 
> Lukas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-27 15:08         ` Moore, Robert
@ 2017-06-27 15:31           ` Rafael J. Wysocki
  2017-06-28  8:59             ` Lukas Wunner
  0 siblings, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2017-06-27 15:31 UTC (permalink / raw)
  To: Moore, Robert
  Cc: Lukas Wunner, Zheng, Lv, Rafael J. Wysocki, Wysocki, Rafael J,
	Ronald Tschalaer, ACPI Devel Maling List

On Tue, Jun 27, 2017 at 5:08 PM, Moore, Robert <robert.moore@intel.com> wrote:
>
>
>> -----Original Message-----
>> From: Lukas Wunner [mailto:lukas@wunner.de]
>> Sent: Tuesday, June 27, 2017 2:24 AM
>> To: Zheng, Lv <lv.zheng@intel.com>
>> Cc: Rafael J. Wysocki <rafael@kernel.org>; Moore, Robert
>> <robert.moore@intel.com>; Wysocki, Rafael J
>> <rafael.j.wysocki@intel.com>; Ronald Tschalaer <ronald@innovation.ch>;
>> ACPI Devel Maling List <linux-acpi@vger.kernel.org>
>> Subject: Re: ACPICA regression for empty ResourceTemplates
>>
>> On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
>> > > On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
>> > > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de>
>> wrote:
>> > > > > Hi Robert,
>> > > > >
>> > > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA:
>> > > > > Update resource descriptor handling") is causing a regression
>> > > > > when parsing an empty ResourceTemplate:
>> >
>> > Can it be fixed by using this logic:
>> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength) Instead of
>> > the logic introduced in commit a83019eb9f1f?
>> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG))
>>
>> Unfortunately not, AmlLength is not 0 but 2 in this case (=
>> sizeof(struct aml_resource_end_tag)).
>>
>>
>> > If so, could you please offer a fix for upstream?
> [Moore, Robert]
>
> Is the problem seen with something like this?
>
>     Name (BUF1, ResourceTemplate ()
>     {
>     })
>
> When BUF1 is evaluated, the exception happens?
>
> I think we have all of the ResourceTemplate issues resolved for the next release of ACPICA.

OK

So I will drop this commit for now and I will add it again along with
the next release material to avoid triggering regressions in the
meantime.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-27  9:24       ` Lukas Wunner
  2017-06-27 15:08         ` Moore, Robert
@ 2017-06-27 18:59         ` Life is hard, and then you die
  2017-06-27 19:23           ` Moore, Robert
  1 sibling, 1 reply; 11+ messages in thread
From: Life is hard, and then you die @ 2017-06-27 18:59 UTC (permalink / raw)
  To: Lukas Wunner
  Cc: Zheng, Lv, Rafael J. Wysocki, Moore, Robert, Wysocki, Rafael J,
	ACPI Devel Maling List


On Tue, Jun 27, 2017 at 11:24:25AM +0200, Lukas Wunner wrote:
> On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
> > > On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> > > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> > > > > Hi Robert,
> > > > >
> > > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> > > > > resource descriptor handling") is causing a regression when parsing
> > > > > an empty ResourceTemplate:
> > 
> > Can it be fixed by using this logic:
> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength)
> > Instead of the logic introduced in commit a83019eb9f1f?
> > if (AmlLength < sizeof (AML_RESOURCE_END_TAG))
> 
> Unfortunately not, AmlLength is not 0 but 2 in this case
> (= sizeof(struct aml_resource_end_tag)).

Actually, that will work here (the use of '<' ensures that). But it's
unclear whether this is semantically the correct thing, in particular
because a83019eb9f1f widened the cases where NO_RESOURCE_END_TAG is
returned, but the above suggestion narrows them. Unfortunately commit
a83019eb9f1f is quite vague about why it reverted back to '<='.


  Cheers,

  Ronald


^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: ACPICA regression for empty ResourceTemplates
  2017-06-27 18:59         ` Life is hard, and then you die
@ 2017-06-27 19:23           ` Moore, Robert
  0 siblings, 0 replies; 11+ messages in thread
From: Moore, Robert @ 2017-06-27 19:23 UTC (permalink / raw)
  To: Life is hard, and then you die, Lukas Wunner
  Cc: Zheng, Lv, Rafael J. Wysocki, Wysocki, Rafael J, ACPI Devel Maling List



> -----Original Message-----
> From: Life is hard, and then you die [mailto:ronald@innovation.ch]
> Sent: Tuesday, June 27, 2017 11:59 AM
> To: Lukas Wunner <lukas@wunner.de>
> Cc: Zheng, Lv <lv.zheng@intel.com>; Rafael J. Wysocki
> <rafael@kernel.org>; Moore, Robert <robert.moore@intel.com>; Wysocki,
> Rafael J <rafael.j.wysocki@intel.com>; ACPI Devel Maling List <linux-
> acpi@vger.kernel.org>
> Subject: Re: ACPICA regression for empty ResourceTemplates
> 
> 
> On Tue, Jun 27, 2017 at 11:24:25AM +0200, Lukas Wunner wrote:
> > On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
> > > > On Mon, Jun 26, 2017 at 01:49:03PM +0200, Rafael J. Wysocki wrote:
> > > > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de>
> wrote:
> > > > > > Hi Robert,
> > > > > >
> > > > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA:
> > > > > > Update resource descriptor handling") is causing a regression
> > > > > > when parsing an empty ResourceTemplate:
> > >
> > > Can it be fixed by using this logic:
> > > if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength) Instead
> > > of the logic introduced in commit a83019eb9f1f?
> > > if (AmlLength < sizeof (AML_RESOURCE_END_TAG))
> >
> > Unfortunately not, AmlLength is not 0 but 2 in this case (=
> > sizeof(struct aml_resource_end_tag)).
> 
> Actually, that will work here (the use of '<' ensures that). But it's
> unclear whether this is semantically the correct thing, in particular
> because a83019eb9f1f widened the cases where NO_RESOURCE_END_TAG is
> returned, but the above suggestion narrows them. Unfortunately commit
> a83019eb9f1f is quite vague about why it reverted back to '<='.
> 
>
[Moore, Robert] 

Yes, the <= is wrong and should be <

There was an odd corner case that was solved by the <=, even though it looks stupid (and is of course incorrect for most cases.)

We have not been able to reproduce this corner case again (yet), so we will revert the <= change back to the <

Bob

>   Cheers,
> 
>   Ronald


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ACPICA regression for empty ResourceTemplates
  2017-06-27 15:31           ` Rafael J. Wysocki
@ 2017-06-28  8:59             ` Lukas Wunner
  0 siblings, 0 replies; 11+ messages in thread
From: Lukas Wunner @ 2017-06-28  8:59 UTC (permalink / raw)
  To: Rafael J. Wysocki, Life is hard, and then you die
  Cc: Moore, Robert, Zheng, Lv, ACPI Devel Maling List

On Tue, Jun 27, 2017 at 11:59:17AM -0700, Life is hard, and then you die wrote:
> On Tue, Jun 27, 2017 at 11:24:25AM +0200, Lukas Wunner wrote:
> > On Tue, Jun 27, 2017 at 01:19:31AM +0000, Zheng, Lv wrote:
> > > > On Mon, Jun 26, 2017 at 10:38 AM, Lukas Wunner <lukas@wunner.de> wrote:
> > > > > ACPICA commit c8eac101 (= Linux commit a83019eb9f1f, "ACPICA: Update
> > > > > resource descriptor handling") is causing a regression when parsing
> > > > > an empty ResourceTemplate:
> > > 
> > > Can it be fixed by using this logic:
> > > if (AmlLength < sizeof (AML_RESOURCE_END_TAG) && AmlLength)
> > > Instead of the logic introduced in commit a83019eb9f1f?
> > > if (AmlLength < sizeof (AML_RESOURCE_END_TAG))
> > 
> > Unfortunately not, AmlLength is not 0 but 2 in this case
> > (= sizeof(struct aml_resource_end_tag)).
> 
> Actually, that will work here (the use of '<' ensures that).

Ugh, right, I had missed that the = was gone in Lv's suggestion, sorry.


On Tue, Jun 27, 2017 at 05:31:52PM +0200, Rafael J. Wysocki wrote:
> So I will drop this commit for now and I will add it again along with
> the next release material to avoid triggering regressions in the
> meantime.

Okay, thanks for the speedy response Rafael and Robert!

Lukas

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-06-28  8:59 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-26  8:38 ACPICA regression for empty ResourceTemplates Lukas Wunner
2017-06-26 11:49 ` Rafael J. Wysocki
2017-06-26 12:38   ` Lukas Wunner
2017-06-26 22:36     ` Rafael J. Wysocki
2017-06-27  1:19     ` Zheng, Lv
2017-06-27  9:24       ` Lukas Wunner
2017-06-27 15:08         ` Moore, Robert
2017-06-27 15:31           ` Rafael J. Wysocki
2017-06-28  8:59             ` Lukas Wunner
2017-06-27 18:59         ` Life is hard, and then you die
2017-06-27 19:23           ` Moore, Robert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.