Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753779AbbKLIxV (ORCPT ); Thu, 12 Nov 2015 03:53:21 -0500 Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:42412 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753269AbbKLIxU (ORCPT ); Thu, 12 Nov 2015 03:53:20 -0500 Date: Thu, 12 Nov 2015 09:53:12 +0100 From: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= To: Frans Klaver Cc: LABBE Corentin , baruch@tkos.co.il, Brian Norris , David Woodhouse , Krzysztof =?utf-8?Q?Koz=C5=82owski?= , Luis de Bethencourt , kernel@pengutronix.de, "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman Subject: Re: [PATCH] mtd: nand: mxc_nand: fix a possible NULL dereference Message-ID: <20151112085312.GF24008@pengutronix.de> References: <1447314423-31225-1-git-send-email-clabbe.montjoie@gmail.com> <20151112082617.GE24008@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2470 Lines: 67 CC += devicetree@vger.kernel.org, gregkh On Thu, Nov 12, 2015 at 09:36:55AM +0100, Frans Klaver wrote: > On Thu, Nov 12, 2015 at 9:26 AM, Uwe Kleine-K?nig > wrote: > > On Thu, Nov 12, 2015 at 09:03:11AM +0100, Frans Klaver wrote: > >> Hi, > >> > >> On Thu, Nov 12, 2015 at 8:46 AM, LABBE Corentin > >> wrote: > >> > of_match_device could return NULL, and so cause a NULL pointer > >> > dereference later. > >> > >> Did you actually run into this? It seems to me that this driver is > >> only probed if and only if we have a match and that therefore > >> of_match_device will always return a valid pointer (it is using the > >> same match table). Am I missing something? > > > > Yes, you're missing something. The driver would probe for a dt snippet > > like: > > > > mxc_nand { > > compatible = "foobar"; > > } > > > > In this case dev->of_node is non-NULL but of_match_device(mxcnd_dt_ids, > > dev) is. > > > > (I didn't actually test this, so there is a chance I'm wrong here. And > > if not I wonder if it is sensible at all to match the device name on > > driver name for of-created platform devices.) > > Yea, looks like you're right. platform devices check a number of > things to determine a match, among which is driver name if all else > fails (platform.c, platform_match()). Maybe something like this would help to reduce surprises: diff --git a/drivers/base/platform.c b/drivers/base/platform.c index f80aaaf9f610..a9fc22c86552 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -840,8 +840,8 @@ static int platform_match(struct device *dev, struct device_driver *drv) return !strcmp(pdev->driver_override, drv->name); /* Attempt an OF style match first */ - if (of_driver_match_device(dev, drv)) - return 1; + if (pdev->dev.of_node) + return of_driver_match_device(dev, drv); /* Then try ACPI style match */ if (acpi_driver_match_device(dev, drv)) Maybe something similar for acpi devices is desirable, too? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-K?nig | Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/