Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751483AbdGQUqd convert rfc822-to-8bit (ORCPT ); Mon, 17 Jul 2017 16:46:33 -0400 Received: from mail.free-electrons.com ([62.4.15.54]:35132 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751320AbdGQUqb (ORCPT ); Mon, 17 Jul 2017 16:46:31 -0400 Date: Mon, 17 Jul 2017 22:46:19 +0200 From: Boris Brezillon To: "Gustavo A. R. Silva" Cc: Stefan Agner , Richard Weinberger , David Woodhouse , Brian Norris , Marek Vasut , Cyrille Pitchen , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mtd: nand: vf610_nfc: add NULL check on of_match_device() return value Message-ID: <20170717224619.1615e13f@bbrezillon> In-Reply-To: <20170707065926.GA25776@embeddedgus> References: <20170707065926.GA25776@embeddedgus> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1269 Lines: 37 Le Fri, 7 Jul 2017 01:59:26 -0500, "Gustavo A. R. Silva" a écrit : > Check return value from call to of_match_device() > in order to prevent a NULL pointer dereference. > > In case of NULL print error message and return -ENODEV > > Signed-off-by: Gustavo A. R. Silva > --- > drivers/mtd/nand/vf610_nfc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/mtd/nand/vf610_nfc.c b/drivers/mtd/nand/vf610_nfc.c > index 744ab10..ca0ab96 100644 > --- a/drivers/mtd/nand/vf610_nfc.c > +++ b/drivers/mtd/nand/vf610_nfc.c > @@ -674,6 +674,11 @@ static int vf610_nfc_probe(struct platform_device *pdev) > } > > of_id = of_match_device(vf610_nfc_dt_ids, &pdev->dev); > + if (!of_id) { > + dev_err(&pdev->dev, "Failed to match device!\n"); > + return -ENODEV; > + } > + While this check is functionally correct, this case cannot happen, because this is DT-only driver, and without a valid match in vf610_nfc_dt_ids the dev wouldn't have been probed in the first place. I'll let Stefan decide whether he wants it or not, but I see no real reason for this extra check. > nfc->variant = (enum vf610_nfc_variant)of_id->data; > > for_each_available_child_of_node(nfc->dev->of_node, child) {