From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,2/6] ACPI / bus: Do not traverse through non-existed device table From: Andy Shevchenko Message-Id: <20180201202012.36524-2-andriy.shevchenko@linux.intel.com> Date: Thu, 1 Feb 2018 22:20:08 +0200 To: dmaengine , "Rafael J . Wysocki" , linux-acpi@vger.kernel.org Cc: Andy Shevchenko , Sinan Kaya , Sakari Ailus , Vinod Koul List-ID: V2hlbiBfX2FjcGlfbWF0Y2hfZGV2aWNlKCkgaXMgY2FsbGVkIGl0IHdvdWxkIGJlIHBvc3NpYmxl IHRvIGhhdmUKQUNQSSBJRCB0YWJsZSBhIE1VTEwgcG9pbnRlci4gVG8gYXZvaWQgcG90ZW50aWFs IGRlcmVmZXJlbmNlLApjaGVjayBmb3IgdGhpcyBiZWZvcmUgdHJhdmVyc2UuCgpXaGlsZSBoZXJl LCByZW1vdmUgcmVkdW5kYW50ICdlbHNlJy4KCkZpeGVzOiA4MDIxMmExNjIzMjkgKCJBQ1BJIC8g YnVzOiBJbnRyb2R1Y2UgYWNwaV9nZXRfbWF0Y2hfZGF0YSgpIGZ1bmN0aW9uIikKQ2M6IFNpbmFu IEtheWEgPG9rYXlhQGNvZGVhdXJvcmEub3JnPgpDYzogU2FrYXJpIEFpbHVzIDxzYWthcmkuYWls dXNAbGludXguaW50ZWwuY29tPgpDYzogVmlub2QgS291bCA8dmlub2Qua291bEBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXgu aW50ZWwuY29tPgotLS0KdjI6IG5ldyBwYXRjaAogZHJpdmVycy9hY3BpL2J1cy5jIHwgMTIgKysr KysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuYwpp bmRleCBhODdhOTdiZjc1ZjguLmYzYTdjMjllOTE5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3Bp L2J1cy5jCisrKyBiL2RyaXZlcnMvYWNwaS9idXMuYwpAQCAtNzQ1LDExICs3NDUsMTMgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqX19hY3BpX21hdGNoX2RldmljZSgKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkoaHdpZCwgJmRldmljZS0+cG5wLmlkcywgbGlzdCkgewogCQkv KiBGaXJzdCwgY2hlY2sgdGhlIEFDUEkvUE5QIElEcyBwcm92aWRlZCBieSB0aGUgY2FsbGVyLiAq LwotCQlmb3IgKGlkID0gaWRzOyBpZC0+aWRbMF0gfHwgaWQtPmNsczsgaWQrKykgewotCQkJaWYg KGlkLT5pZFswXSAmJiAhc3RyY21wKChjaGFyICopIGlkLT5pZCwgaHdpZC0+aWQpKQotCQkJCXJl dHVybiBpZDsKLQkJCWVsc2UgaWYgKGlkLT5jbHMgJiYgX19hY3BpX21hdGNoX2RldmljZV9jbHMo aWQsIGh3aWQpKQotCQkJCXJldHVybiBpZDsKKwkJaWYgKGlkcykgeworCQkJZm9yIChpZCA9IGlk czsgaWQtPmlkWzBdIHx8IGlkLT5jbHM7IGlkKyspIHsKKwkJCQlpZiAoaWQtPmlkWzBdICYmICFz dHJjbXAoKGNoYXIgKilpZC0+aWQsIGh3aWQtPmlkKSkKKwkJCQkJcmV0dXJuIGlkOworCQkJCWlm IChpZC0+Y2xzICYmIF9fYWNwaV9tYXRjaF9kZXZpY2VfY2xzKGlkLCBod2lkKSkKKwkJCQkJcmV0 dXJuIGlkOworCQkJfQogCQl9CiAKIAkJLyoK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: [PATCH v2 2/6] ACPI / bus: Do not traverse through non-existed device table Date: Thu, 1 Feb 2018 22:20:08 +0200 Message-ID: <20180201202012.36524-2-andriy.shevchenko@linux.intel.com> References: <20180201202012.36524-1-andriy.shevchenko@linux.intel.com> Return-path: Received: from mga05.intel.com ([192.55.52.43]:52169 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754911AbeBAUUT (ORCPT ); Thu, 1 Feb 2018 15:20:19 -0500 In-Reply-To: <20180201202012.36524-1-andriy.shevchenko@linux.intel.com> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: dmaengine , "Rafael J . Wysocki" , linux-acpi@vger.kernel.org Cc: Andy Shevchenko , Sinan Kaya , Sakari Ailus , Vinod Koul When __acpi_match_device() is called it would be possible to have ACPI ID table a MULL pointer. To avoid potential dereference, check for this before traverse. While here, remove redundant 'else'. Fixes: 80212a162329 ("ACPI / bus: Introduce acpi_get_match_data() function") Cc: Sinan Kaya Cc: Sakari Ailus Cc: Vinod Koul Signed-off-by: Andy Shevchenko --- 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; + } } /* -- 2.15.1