From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933714Ab2HWUh3 (ORCPT ); Thu, 23 Aug 2012 16:37:29 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]:57553 "HELO mailout-de.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S932738Ab2HWUhX (ORCPT ); Thu, 23 Aug 2012 16:37:23 -0400 X-Authenticated: #10250065 X-Provags-ID: V01U2FsdGVkX18kZpdwyZ8k9nhiUwuXhs9Uwt0J/FzKfTFAmu01yC KRudGbXvSVy6bD Message-ID: <5036947E.3040707@gmx.de> Date: Thu, 23 Aug 2012 20:37:18 +0000 From: Florian Tobias Schandinat User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20120613 Icedove/3.0.11 MIME-Version: 1.0 To: Damien Cassou CC: kernel-janitors@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] drivers/video/mbx/mbxfb.c: use devm_ functions References: <1343752762-16861-1-git-send-email-damien.cassou@lifl.fr> <1343752762-16861-2-git-send-email-damien.cassou@lifl.fr> In-Reply-To: <1343752762-16861-2-git-send-email-damien.cassou@lifl.fr> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/31/2012 04:39 PM, Damien Cassou wrote: > From: Damien Cassou > > The various devm_ functions allocate memory that is released when a driver > detaches. This patch uses these functions for data that is allocated in > the probe function of a platform device and is only freed in the remove > function. > > Signed-off-by: Damien Cassou Applied. Thanks, Florian Tobias Schandinat > > --- > drivers/video/mbx/mbxfb.c | 22 ++++++++-------------- > 1 file changed, 8 insertions(+), 14 deletions(-) > > diff --git a/drivers/video/mbx/mbxfb.c b/drivers/video/mbx/mbxfb.c > index 85e4f44..9229acf 100644 > --- a/drivers/video/mbx/mbxfb.c > +++ b/drivers/video/mbx/mbxfb.c > @@ -939,8 +939,9 @@ static int __devinit mbxfb_probe(struct platform_device *dev) > } > mfbi->reg_phys_addr = mfbi->reg_res->start; > > - mfbi->reg_virt_addr = ioremap_nocache(mfbi->reg_phys_addr, > - res_size(mfbi->reg_req)); > + mfbi->reg_virt_addr = devm_ioremap_nocache(&dev->dev, > + mfbi->reg_phys_addr, > + res_size(mfbi->reg_req)); > if (!mfbi->reg_virt_addr) { > dev_err(&dev->dev, "failed to ioremap Marathon registers\n"); > ret = -EINVAL; > @@ -948,12 +949,12 @@ static int __devinit mbxfb_probe(struct platform_device *dev) > } > virt_base_2700 = mfbi->reg_virt_addr; > > - mfbi->fb_virt_addr = ioremap_nocache(mfbi->fb_phys_addr, > - res_size(mfbi->fb_req)); > + mfbi->fb_virt_addr = devm_ioremap_nocache(&dev->dev, mfbi->fb_phys_addr, > + res_size(mfbi->fb_req)); > if (!mfbi->fb_virt_addr) { > dev_err(&dev->dev, "failed to ioremap frame buffer\n"); > ret = -EINVAL; > - goto err4; > + goto err3; > } > > fbi->screen_base = (char __iomem *)(mfbi->fb_virt_addr + 0x60000); > @@ -971,7 +972,7 @@ static int __devinit mbxfb_probe(struct platform_device *dev) > if (ret < 0) { > dev_err(&dev->dev, "fb_alloc_cmap failed\n"); > ret = -EINVAL; > - goto err5; > + goto err3; > } > > platform_set_drvdata(dev, fbi); > @@ -996,10 +997,6 @@ static int __devinit mbxfb_probe(struct platform_device *dev) > > err6: > fb_dealloc_cmap(&fbi->cmap); > -err5: > - iounmap(mfbi->fb_virt_addr); > -err4: > - iounmap(mfbi->reg_virt_addr); > err3: > release_mem_region(mfbi->reg_res->start, res_size(mfbi->reg_res)); > err2: > @@ -1026,10 +1023,7 @@ static int __devexit mbxfb_remove(struct platform_device *dev) > if (mfbi->platform_remove) > mfbi->platform_remove(fbi); > > - if (mfbi->fb_virt_addr) > - iounmap(mfbi->fb_virt_addr); > - if (mfbi->reg_virt_addr) > - iounmap(mfbi->reg_virt_addr); > + > if (mfbi->reg_req) > release_mem_region(mfbi->reg_req->start, > res_size(mfbi->reg_req)); > >