From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032759Ab2CPLXc (ORCPT ); Fri, 16 Mar 2012 07:23:32 -0400 Received: from s15943758.onlinehome-server.info ([217.160.130.188]:48868 "EHLO mail.x86-64.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1032719Ab2CPLXa (ORCPT ); Fri, 16 Mar 2012 07:23:30 -0400 Date: Fri, 16 Mar 2012 12:23:01 +0100 From: Borislav Petkov To: Julia Lawall Cc: linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, kernel-janitors@vger.kernel.org, Cao Qingtao , Benjamin Walsh , Hu Yongqi Subject: Re: [PATCH] drivers/edac/amd8131_edac.c: add missing pci_dev_put Message-ID: <20120316112301.GB8577@aftab> References: <1331893626-5368-1-git-send-email-Julia.Lawall@lip6.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1331893626-5368-1-git-send-email-Julia.Lawall@lip6.fr> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 16, 2012 at 11:27:06AM +0100, Julia Lawall wrote: > From: Julia Lawall > > Add a call to pci_dev_put in each error case. This is motivated by the > associated remove function, which always calls pci_dev_put. > > Shift the error-handling code to the end of the function. > > Signed-off-by: Julia Lawall Let's see whether someone at Wind River actually still maintains that, added to CC. > > --- > drivers/edac/amd8131_edac.c | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/drivers/edac/amd8131_edac.c b/drivers/edac/amd8131_edac.c > index a5c6805..dcfd53b 100644 > --- a/drivers/edac/amd8131_edac.c > +++ b/drivers/edac/amd8131_edac.c > @@ -249,6 +249,7 @@ static struct amd8131_info amd8131_chipset = { > static int amd8131_probe(struct pci_dev *dev, const struct pci_device_id *id) > { > struct amd8131_dev_info *dev_info; > + int ret; > > for (dev_info = amd8131_chipset.devices; dev_info->inst != NO_BRIDGE; > dev_info++) > @@ -265,12 +266,12 @@ static int amd8131_probe(struct pci_dev *dev, const struct pci_device_id *id) > dev_info->dev = pci_dev_get(dev); > > if (pci_enable_device(dev_info->dev)) { > - pci_dev_put(dev_info->dev); > printk(KERN_ERR "failed to enable:" > "vendor %x, device %x, devfn %x, name %s\n", > PCI_VENDOR_ID_AMD, amd8131_chipset.err_dev, > dev_info->devfn, dev_info->ctl_name); > - return -ENODEV; > + ret = -ENODEV; > + goto error; > } > > /* > @@ -280,8 +281,10 @@ static int amd8131_probe(struct pci_dev *dev, const struct pci_device_id *id) > */ > dev_info->edac_idx = edac_pci_alloc_index(); > dev_info->edac_dev = edac_pci_alloc_ctl_info(0, dev_info->ctl_name); > - if (!dev_info->edac_dev) > - return -ENOMEM; > + if (!dev_info->edac_dev) { > + ret = -ENOMEM; > + goto error; > + } > > dev_info->edac_dev->pvt_info = dev_info; > dev_info->edac_dev->dev = &dev_info->dev->dev; > @@ -298,8 +301,8 @@ static int amd8131_probe(struct pci_dev *dev, const struct pci_device_id *id) > if (edac_pci_add_device(dev_info->edac_dev, dev_info->edac_idx) > 0) { > printk(KERN_ERR "failed edac_pci_add_device() for %s\n", > dev_info->ctl_name); > - edac_pci_free_ctl_info(dev_info->edac_dev); > - return -ENODEV; > + ret = -ENODEV; > + goto error_info; > } > > printk(KERN_INFO "added one device on AMD8131 " > @@ -308,6 +311,11 @@ static int amd8131_probe(struct pci_dev *dev, const struct pci_device_id *id) > dev_info->devfn, dev_info->ctl_name); > > return 0; > +error_info: > + edac_pci_free_ctl_info(dev_info->edac_dev); > +error: > + pci_dev_put(dev_info->dev); > + return ret; > } > > static void amd8131_remove(struct pci_dev *dev) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-edac" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551