From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161319AbcFGScV (ORCPT ); Tue, 7 Jun 2016 14:32:21 -0400 Received: from m15-39.126.com ([220.181.15.39]:57822 "EHLO m15-39.126.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752606AbcFGScU (ORCPT ); Tue, 7 Jun 2016 14:32:20 -0400 X-Greylist: delayed 1890 seconds by postgrey-1.27 at vger.kernel.org; Tue, 07 Jun 2016 14:32:19 EDT X-Originating-IP: [36.111.128.106] Date: Wed, 8 Jun 2016 02:00:35 +0800 (CST) From: "Tiezhu Yang" To: martin.petersen@oracle.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scsi: ufs: fix potential memory leak X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20160223(81157.8522) Copyright (c) 2002-2016 www.mailtech.cn 126com Content-Type: text/plain; charset=GBK MIME-Version: 1.0 Message-ID: <1a5ff649.111.1552c05f371.Coremail.kernelpatch@126.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: J8qowADn7v7EC1dXrVYHAA--.46063W X-CM-SenderInfo: xnhu0vxosd3ubk6rjloofrz/1tbi6A2B9VUJWJ33hgABs4 X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u57IWT05000410 There exists potential memory leak in ufshcd_parse_clock_info(), this patch fixes it. Signed-off-by: Tiezhu Yang --- drivers/scsi/ufs/ufshcd-pltfrm.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c index db53f38..8b057f4 100644 --- a/drivers/scsi/ufs/ufshcd-pltfrm.c +++ b/drivers/scsi/ufs/ufshcd-pltfrm.c @@ -100,19 +100,19 @@ static int ufshcd_parse_clock_info(struct ufs_hba *hba) if (ret && (ret != -EINVAL)) { dev_err(dev, "%s: error reading array %d\n", "freq-table-hz", ret); - return ret; + goto out_free; } for (i = 0; i < sz; i += 2) { ret = of_property_read_string_index(np, "clock-names", i/2, (const char **)&name); if (ret) - goto out; + goto out_free; clki = devm_kzalloc(dev, sizeof(*clki), GFP_KERNEL); if (!clki) { ret = -ENOMEM; - goto out; + goto out_free; } clki->min_freq = clkfreq[i]; @@ -122,6 +122,10 @@ static int ufshcd_parse_clock_info(struct ufs_hba *hba) clki->min_freq, clki->max_freq, clki->name); list_add_tail(&clki->list, &hba->clk_list_head); } + +out_free: + devm_kfree(dev, clkfreq); + clkfreq = NULL; out: return ret; } -- 1.8.3.1