Message ID | 6072715.FoXSX1UJhO@vostro.rjw.lan (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Dne 28.11.2012 21:31, Rafael J. Wysocki napsal(a): > On Wednesday, November 28, 2012 06:27:50 PM Zdenek Kabelac wrote: >> Dne 28.11.2012 18:02, Linus Torvalds napsal(a): >>> On Wed, Nov 28, 2012 at 8:21 AM, Zdenek Kabelac <zkabelac@redhat.com> wrote: >>>> >>>> I've opened https://bugzilla.kernel.org/show_bug.cgi?id=51071 >>>> and attached picture there which is all I have. > > I wonder if you can try to apply the patch below and see if that makes any > difference? > Yep - extended BZ with 2 new pictures - it's now crashing earlier within the call of acpi_bus_get_device(). Zdenek -- 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
On Thursday, November 29, 2012 10:03:53 AM Zdenek Kabelac wrote: > Dne 28.11.2012 21:31, Rafael J. Wysocki napsal(a): > > On Wednesday, November 28, 2012 06:27:50 PM Zdenek Kabelac wrote: > >> Dne 28.11.2012 18:02, Linus Torvalds napsal(a): > >>> On Wed, Nov 28, 2012 at 8:21 AM, Zdenek Kabelac <zkabelac@redhat.com> wrote: > >>>> > >>>> I've opened https://bugzilla.kernel.org/show_bug.cgi?id=51071 > >>>> and attached picture there which is all I have. > > > > I wonder if you can try to apply the patch below and see if that makes any > > difference? > > > > Yep - extended BZ with 2 new pictures - it's now crashing earlier within > the call of acpi_bus_get_device(). Pretty much as expected. So this is the problem I was thinking it was: the previous suspend-resume cycle unregistered the struct acpi_device pointed to by dev->data in pnpacpi_build_resource_template(), so the handle pointer in there is now invalid. Thanks, Rafael
Index: linux/drivers/pnp/pnpacpi/rsparser.c =================================================================== --- linux.orig/drivers/pnp/pnpacpi/rsparser.c +++ linux/drivers/pnp/pnpacpi/rsparser.c @@ -610,6 +610,14 @@ int pnpacpi_build_resource_template(stru struct acpi_resource *resource; int res_cnt = 0; acpi_status status; + int ret; + + /* Sanity check. */ + ret = acpi_bus_get_device(handle, &acpi_dev); + if (ret) { + dev_err(&dev->dev, "ACPI node is invalid in %s\n", __func__); + return ret; + } status = acpi_walk_resources(handle, METHOD_NAME__CRS, pnpacpi_count_resources, &res_cnt);