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 <kys@xxxxxxxxxxxxx> > Reviewed-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > Reported-by: Jason Wang <jasowang@xxxxxxxxxx> > --- > drivers/hv/hv_balloon.c | 23 +++++++++++++---------- > 1 files changed, 13 insertions(+), 10 deletions(-) Thanks. Acked-by: Jason Wang <jasowang@xxxxxxxxxx> > 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; > } _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel