From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757437AbbFQQZE (ORCPT ); Wed, 17 Jun 2015 12:25:04 -0400 Received: from mga01.intel.com ([192.55.52.88]:42508 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755239AbbFQQY5 (ORCPT ); Wed, 17 Jun 2015 12:24:57 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,633,1427785200"; d="scan'208";a="745242127" Date: Wed, 17 Jun 2015 16:24:56 +0000 (UTC) From: Keith Busch X-X-Sender: vmware@localhost.lm.intel.com To: Dheepthi K cc: Matthew Wilcox , linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, madhu@gracelabs.com Subject: Re: [PATCH 1/1] NVMe : Corrected memory freeing. In-Reply-To: <1434557459-4732-1-git-send-email-dheepthi.s@gracelabs.com> Message-ID: References: <1434557459-4732-1-git-send-email-dheepthi.s@gracelabs.com> User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 17 Jun 2015, Dheepthi K wrote: > Memory freeing order has been corrected incase of > allocation failure. This isn't necessary. The nvme_dev is zero'ed on allocation, and kfree(NULL or (void *)0) is okay to do. > Signed-off-by: Dheepthi K > --- > drivers/block/nvme-core.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c > index 683dff2..9bac53b 100644 > --- a/drivers/block/nvme-core.c > +++ b/drivers/block/nvme-core.c > @@ -2947,11 +2947,11 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) > dev->entry = kzalloc_node(num_possible_cpus() * sizeof(*dev->entry), > GFP_KERNEL, node); > if (!dev->entry) > - goto free; > + goto free_dev; > dev->queues = kzalloc_node((num_possible_cpus() + 1) * sizeof(void *), > GFP_KERNEL, node); > if (!dev->queues) > - goto free; > + goto free_entry; > > INIT_LIST_HEAD(&dev->namespaces); > dev->reset_workfn = nvme_reset_failed_dev; > @@ -2987,9 +2987,10 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) > nvme_release_instance(dev); > put_pci: > pci_dev_put(dev->pci_dev); > - free: > kfree(dev->queues); > + free_entry: > kfree(dev->entry); > + free_dev: > kfree(dev); > return result; > }