From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752887Ab2LMFWK (ORCPT ); Thu, 13 Dec 2012 00:22:10 -0500 Received: from mx1.redhat.com ([209.132.183.28]:3464 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750708Ab2LMFWJ (ORCPT ); Thu, 13 Dec 2012 00:22:09 -0500 Message-ID: <50C965EA.80905@redhat.com> Date: Thu, 13 Dec 2012 13:21:46 +0800 From: Jason Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: "K. Y. Srinivasan" CC: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com Subject: Re: [PATCH 1/1] Drivers: hv: balloon: Fix a memory leak References: <1355252837-9827-1-git-send-email-kys@microsoft.com> In-Reply-To: <1355252837-9827-1-git-send-email-kys@microsoft.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/12/2012 03:07 AM, K. Y. Srinivasan wrote: > The send buffer was being leaked; fix it. > > Signed-off-by: K. Y. Srinivasan > Reviewed-by: Haiyang Zhang > Reported-by: Jason Wang > --- > drivers/hv/hv_balloon.c | 23 +++++++++++++---------- > 1 files changed, 13 insertions(+), 10 deletions(-) Thanks. Acked-by: Jason Wang > diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c > index 00c8447..c02a33e 100644 > --- a/drivers/hv/hv_balloon.c > +++ b/drivers/hv/hv_balloon.c > @@ -882,7 +882,7 @@ static int balloon_probe(struct hv_device *dev, > balloon_onchannelcallback, dev); > > if (ret) > - return ret; > + goto probe_error0; > > dm_device.dev = dev; > dm_device.state = DM_INITIALIZING; > @@ -894,7 +894,7 @@ static int balloon_probe(struct hv_device *dev, > kthread_run(dm_thread_func, &dm_device, "hv_balloon"); > if (IS_ERR(dm_device.thread)) { > ret = PTR_ERR(dm_device.thread); > - goto probe_error0; > + goto probe_error1; > } > > hv_set_drvdata(dev, &dm_device); > @@ -917,12 +917,12 @@ static int balloon_probe(struct hv_device *dev, > VM_PKT_DATA_INBAND, > VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); > if (ret) > - goto probe_error1; > + goto probe_error2; > > t = wait_for_completion_timeout(&dm_device.host_event, 5*HZ); > if (t == 0) { > ret = -ETIMEDOUT; > - goto probe_error1; > + goto probe_error2; > } > > /* > @@ -931,7 +931,7 @@ static int balloon_probe(struct hv_device *dev, > */ > if (dm_device.state == DM_INIT_ERROR) { > ret = -ETIMEDOUT; > - goto probe_error1; > + goto probe_error2; > } > /* > * Now submit our capabilities to the host. > @@ -964,12 +964,12 @@ static int balloon_probe(struct hv_device *dev, > VM_PKT_DATA_INBAND, > VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); > if (ret) > - goto probe_error1; > + goto probe_error2; > > t = wait_for_completion_timeout(&dm_device.host_event, 5*HZ); > if (t == 0) { > ret = -ETIMEDOUT; > - goto probe_error1; > + goto probe_error2; > } > > /* > @@ -978,18 +978,20 @@ static int balloon_probe(struct hv_device *dev, > */ > if (dm_device.state == DM_INIT_ERROR) { > ret = -ETIMEDOUT; > - goto probe_error1; > + goto probe_error2; > } > > dm_device.state = DM_INITIALIZED; > > return 0; > > -probe_error1: > +probe_error2: > kthread_stop(dm_device.thread); > > -probe_error0: > +probe_error1: > vmbus_close(dev->channel); > +probe_error0: > + kfree(send_buffer); > return ret; > } > > @@ -1002,6 +1004,7 @@ static int balloon_remove(struct hv_device *dev) > > vmbus_close(dev->channel); > kthread_stop(dm->thread); > + kfree(send_buffer); > > return 0; > }