Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756202Ab3FROYr (ORCPT ); Tue, 18 Jun 2013 10:24:47 -0400 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:45550 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755764Ab3FROYp (ORCPT ); Tue, 18 Jun 2013 10:24:45 -0400 Date: Tue, 18 Jun 2013 16:24:43 +0200 From: Pavel Machek To: Grant Likely Cc: Detlev Zundel , "Hans J. Koch" , Greg Kroah-Hartman , Rob Herring , Linux Kernel Mailing List , trivial Subject: Re: [PATCH] fix UIO with device tree but no assigned interrupt Message-ID: <20130618142442.GA17361@amd.pavel.ucw.cz> References: <20130617134957.GA15602@amd.pavel.ucw.cz> <20130618125235.GA15122@amd.pavel.ucw.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2025 Lines: 54 Hi! > > If device is initialized from device tree, but has no interrupt > > assigned, uio will still try to request and interrupt old way, fails, > > and fails registration. > > > > This is wrong; don't try initializing irq using platform data if > > device tree is available. > > > > Simplified code based on suggestion by Grant Likely. > > > > Fixed memory leak in "irq can not be registered" error path. > > > > Signed-off-by: Pavel Machek > > Reported-by: Detlev Zundel > > @@ -146,14 +138,15 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) > > priv->flags = 0; /* interrupt is enabled to begin with */ > > priv->pdev = pdev; > > > > - if (!uioinfo->irq) { > > - ret = platform_get_irq(pdev, 0); > > - if (ret < 0) { > > - dev_err(&pdev->dev, "failed to get IRQ\n"); > > - goto bad0; > > - } > > - uioinfo->irq = ret; > > + ret = platform_get_irq(pdev, 0); > > + uioinfo->irq = ret; > > + if (ret == -ENXIO && pdev->dev.of_node) > > + uioinfo->irq = UIO_IRQ_NONE; > > This short-circuits the platform data use case where uioinfo->irq is > already set. The if (!uioinfo->irq) test is still needed. The original > code looks like it already handles it correctly for both the > platform_data and DT use cases because in the DT case the uioinfo > structure is zeroed by kzalloc(). Ok, fixed, thanks! > As an aside, switching to devm_kzalloc() would simplify the unwind > path. Well, lets leave that for another day... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- 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/