From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754107AbbKWJB2 (ORCPT ); Mon, 23 Nov 2015 04:01:28 -0500 Received: from mail-wm0-f41.google.com ([74.125.82.41]:36570 "EHLO mail-wm0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753010AbbKWJB0 (ORCPT ); Mon, 23 Nov 2015 04:01:26 -0500 Message-ID: <5652D5E4.8030900@lightnvm.io> Date: Mon, 23 Nov 2015 10:01:24 +0100 From: =?UTF-8?B?TWF0aWFzIEJqw7hybGluZw==?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Wenwei Tao CC: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Subject: Re: [PATCH] lightnvm: free allocated memory when gennvm register fails References: <1448267375-19009-1-git-send-email-ww.tao0320@gmail.com> <5652D290.8090705@lightnvm.io> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/23/2015 10:00 AM, Wenwei Tao wrote: > This is okay with me. Great, I'll go ahead and apply it. > > 2015-11-23 16:47 GMT+08:00 Matias Bjørling : >> On 11/23/2015 09:29 AM, Wenwei Tao wrote: >>> >>> free allocated nvm block and gennvm lun structures when >>> gennvm register fails, otherwise it will cause memory leak. >>> >>> Signed-off-by: Wenwei Tao >>> --- >>> drivers/lightnvm/gennvm.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c >>> index ae1fb2b..03fc7a5 100644 >>> --- a/drivers/lightnvm/gennvm.c >>> +++ b/drivers/lightnvm/gennvm.c >>> @@ -211,12 +211,15 @@ static int gennvm_register(struct nvm_dev *dev) >>> ret = gennvm_blocks_init(dev, gn); >>> if (ret) { >>> pr_err("gennvm: could not initialize blocks\n"); >>> + gennvm_blocks_free(dev); >>> + gennvm_luns_free(dev); >>> goto err; >>> } >>> >>> return 1; >>> err: >>> kfree(gn); >>> + dev->mp = NULL; >>> return ret; >>> } >>> >>> >> Thanks Tao, would it be okay with you if I apply the patch like this: >> >> diff --git i/drivers/lightnvm/gennvm.c w/drivers/lightnvm/gennvm.c >> index e20e74e..3969a98 100644 >> --- i/drivers/lightnvm/gennvm.c >> +++ w/drivers/lightnvm/gennvm.c >> @@ -207,6 +207,14 @@ static int gennvm_blocks_init(struct nvm_dev *dev, >> struct gen_nvm *gn) >> return 0; >> } >> >> +static void gennvm_free(struct nvm_dev *dev) >> +{ >> + gennvm_blocks_free(dev); >> + gennvm_luns_free(dev); >> + kfree(dev->mp); >> + dev->mp = NULL; >> +} >> + >> static int gennvm_register(struct nvm_dev *dev) >> { >> struct gen_nvm *gn; >> @@ -234,16 +242,13 @@ static int gennvm_register(struct nvm_dev *dev) >> >> return 1; >> err: >> - kfree(gn); >> + gennvm_free(dev); >> return ret; >> } >> >> static void gennvm_unregister(struct nvm_dev *dev) >> { >> - gennvm_blocks_free(dev); >> - gennvm_luns_free(dev); >> - kfree(dev->mp); >> - dev->mp = NULL; >> + gennvm_free(dev); >> } >> >>