On 2/1/2018 3:20 PM, Andy Shevchenko wrote: > When __acpi_match_device() is called it would be possible to have > ACPI ID table a MULL pointer. To avoid potential dereference, NULL > check for this before traverse. > > While here, remove redundant 'else'. > > Fixes: 80212a162329 ("ACPI / bus: Introduce acpi_get_match_data() function") > Cc: Sinan Kaya <okaya@xxxxxxxxxxxxxx> > Cc: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > Cc: Vinod Koul <vinod.koul@xxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > v2: new patch > drivers/acpi/bus.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c > index a87a97bf75f8..f3a7c29e9190 100644 > --- a/drivers/acpi/bus.c > +++ b/drivers/acpi/bus.c > @@ -745,11 +745,13 @@ static const struct acpi_device_id *__acpi_match_device( > > list_for_each_entry(hwid, &device->pnp.ids, list) { > /* First, check the ACPI/PNP IDs provided by the caller. */ > - for (id = ids; id->id[0] || id->cls; id++) { > - if (id->id[0] && !strcmp((char *) id->id, hwid->id)) > - return id; > - else if (id->cls && __acpi_match_device_cls(id, hwid)) > - return id; > + if (ids) { > + for (id = ids; id->id[0] || id->cls; id++) { > + if (id->id[0] && !strcmp((char *)id->id, hwid->id)) > + return id; > + if (id->cls && __acpi_match_device_cls(id, hwid)) > + return id; > + } > } > > /* > Why not bail out here immediately if ids is null? __acpi_match_device() { /* * If the device is not present, it is unnecessary to load device * driver for it. */ if (!device || !device->status.present) return NULL; } -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. -- 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