From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757217AbbFQQYX (ORCPT ); Wed, 17 Jun 2015 12:24:23 -0400 Received: from mga02.intel.com ([134.134.136.20]:43398 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754860AbbFQQYO (ORCPT ); Wed, 17 Jun 2015 12:24:14 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,633,1427785200"; d="scan'208";a="589654405" Date: Wed, 17 Jun 2015 12:24:12 -0400 From: Matthew Wilcox To: Dheepthi K Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, madhu@gracelabs.com Subject: Re: [PATCH 1/1] NVMe : Corrected memory freeing. Message-ID: <20150617162412.GA1971@linux.intel.com> References: <1434557459-4732-1-git-send-email-dheepthi.s@gracelabs.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1434557459-4732-1-git-send-email-dheepthi.s@gracelabs.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 17, 2015 at 09:40:59PM +0530, Dheepthi K wrote: > Memory freeing order has been corrected incase of > allocation failure. This doesn't fix a bug. kfree(NULL) is a no-op, and 'dev' is allocated with kzalloc, so the current error path will call kfree(NULL). > @@ -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; > } > -- > 1.7.9.5