Re: [PATCH] pinctrl: intel: fix NULL pointer deref

From: Henning Schild
Date: Wed Jun 09 2021 - 07:21:14 EST


Am Wed, 9 Jun 2021 13:33:34 +0300
schrieb Andy Shevchenko <andy.shevchenko@xxxxxxxxx>:

> On Wed, Jun 9, 2021 at 1:12 PM Mika Westerberg
> <mika.westerberg@xxxxxxxxxxxxxxx> wrote:
> > On Wed, Jun 09, 2021 at 08:27:22AM +0200, Henning Schild wrote:
> > > match could be NULL in which case we do not go ACPI after all
>
> ...
>
> > > adev = ACPI_COMPANION(&pdev->dev);
> > > - if (adev) {
> > > - const void *match =
> > > device_get_match_data(&pdev->dev); -
> > > + match = device_get_match_data(&pdev->dev);
> >
> > Actually we don't even call intel_pinctrl_get_soc_data() if the
> > ACPI ID is not listed in the corresponding driver's module table.
> > So I don't think match can ever be NULL.
> >
> > But feel free to prove me wrong ;-)
>
> It's possible to have bugs in this driver, but can we see the real
> case here?

Yes that is indeed only showing when using a kernel that has seen other
patches. To be precise i applied "[rfc, PATCH v1 0/7] PCI: introduce
p2sb helper" before running into the problem. Something in there must
be calling the function without the ACPI ID.

I am still working on a series of device drivers for Siemens PCs,
adding i.e. LEDs which are in fact GPIO. Those PCs have a hidden p2sb
and no ACPI entries for the LEDs.

In order to use GPIO from the drivers i need to make sure
"broxton-pinctrl" comes up even if p2sb is hidden.

Long story short, i thought the patch was simple enough to merge even
taken out of my special context.

Currently intel_pinctl only works if "ps2b is not hidden by BIOS" or
"ACPI tables are correct", lifting the ban on the hidden p2sb seems
like a useful thing in general (i.e. sysfs gpio interface). And i was
hoping Andy would take the lead on that. It is something my Siemens
drivers would depend on, but really a generic thing as far as i
understand it.

regards,
Henning