From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752756AbeB1N1u (ORCPT ); Wed, 28 Feb 2018 08:27:50 -0500 Received: from lelnx194.ext.ti.com ([198.47.27.80]:52534 "EHLO lelnx194.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752267AbeB1N1s (ORCPT ); Wed, 28 Feb 2018 08:27:48 -0500 Subject: Re: [PATCH v4 3/3] PCI: endpoint: pci_epf_create: remove goto labels To: Rolf Evers-Fischer References: <20180228130719.31218-1-embedded24@evers-fischer.de> <20180228130719.31218-4-embedded24@evers-fischer.de> CC: , , , , , Rolf Evers-Fischer From: Kishon Vijay Abraham I Message-ID: Date: Wed, 28 Feb 2018 18:57:36 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20180228130719.31218-4-embedded24@evers-fischer.de> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Wednesday 28 February 2018 06:37 PM, Rolf Evers-Fischer wrote: > From: Rolf Evers-Fischer > > Removes the goto labels completely, handles the errors at the > respective call site and just returns instead of jumping around. > > Signed-off-by: Rolf Evers-Fischer > --- > drivers/pci/endpoint/pci-epf-core.c | 30 +++++++++--------------------- > 1 file changed, 9 insertions(+), 21 deletions(-) > > diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c > index 1878a6776519..cf2c4f6590a0 100644 > --- a/drivers/pci/endpoint/pci-epf-core.c > +++ b/drivers/pci/endpoint/pci-epf-core.c > @@ -203,16 +203,14 @@ struct pci_epf *pci_epf_create(const char *name) > int len; > > epf = kzalloc(sizeof(*epf), GFP_KERNEL); > - if (!epf) { > - ret = -ENOMEM; > - goto err_ret; > - } > + if (!epf) > + return ERR_PTR(-ENOMEM); > > len = strchrnul(name, '.') - name; > epf->name = kstrndup(name, len, GFP_KERNEL); > if (!epf->name) { > - ret = -ENOMEM; > - goto free_epf; > + kfree(epf); > + return ERR_PTR(-ENOMEM); > } > > dev = &epf->dev; > @@ -221,24 +219,14 @@ struct pci_epf *pci_epf_create(const char *name) > dev->type = &pci_epf_type; > > ret = dev_set_name(dev, "%s", name); > - if (ret) > - goto put_dev; > - > - ret = device_add(dev); > - if (ret) > - goto put_dev; > - > - return epf; > + if (!ret) { > + ret = device_add(dev); > + if (!ret) > + return epf; I don't prefer the correct return value being hidden under two levels of 'if'. Thanks Kishon