All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wen Congyang <wency@cn.fujitsu.com>
To: rshriram@cs.ubc.ca
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Jiang Yunhong <yunhong.jiang@intel.com>,
	Dong Eddie <eddie.dong@intel.com>,
	xen devel <xen-devel@lists.xen.org>,
	Yang Hongyang <yanghy@cn.fujitsu.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [RFC Patch v3 09/18] block-remus: fix memory leak
Date: Thu, 25 Sep 2014 13:23:04 +0800	[thread overview]
Message-ID: <5423A6B8.4050001@cn.fujitsu.com> (raw)
In-Reply-To: <CAP8mzPOFEiycJv4cH4xekVAQVzJbDj187u3vjybDTRvZ9JuDUw@mail.gmail.com>

On 09/25/2014 03:37 AM, Shriram Rajagopalan wrote:
> On Sep 5, 2014 5:15 AM, "Wen Congyang" <wency@cn.fujitsu.com> wrote:
>>
>> Fix the following two memory leak:
>> 1. If s->ramdisk.prev is not NULL, we merge the write requests in
>>    s->ramdisk.h into s->ramdisk.prev, and then destroy s->ramdisk.h.
>>    But we forget to free hash value when destroying s->ramdisk.h.
> 
> I am responding from my phone. So I don't have the code in hand to validate
> your claim. I think the merge function reuses the value block (write
> request) instead of doing a memcpy. In which case, this patch will be
> freeing the buffer that is queued for write. Is that right?

No, if we have cached the sector in s->ramdisk.prev, we just use memcpy.
Otherwise, we alloc memory and use memcpy. Why we don't reuse the buff?
Because the buff may be in the stack...

> 
>> 2. When write requests is finished, replicated_write_callback() will
>>    be called. We forget free the buff in this function.
> 
> Wasn't that done explicitly in the write req done function, where a
> free(buf) was introduced? (Vague recollection... I am not sure if I pushed
> that fix upstream either :( )

Sorry, I forgot to update the commit message. Bug 2 has been fixed...

> 
> Either way, if you have a working Remus setup, can you confirm that this
> patch does not cause double free error? (Just this patch and no other Remus
> related fixes).

Hmm, I don't test it for newest xen, because only drbd is supported now.

Thanks
Wen COngyang

> 
>>
>> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
>> Signed-off-by: Jiang Yunhong <yunhong.jiang@intel.com>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>> Cc: Shriram Rajagopalan <rshriram@cs.ubc.ca>
>> ---
>>  tools/blktap2/drivers/block-remus.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/blktap2/drivers/block-remus.c
> b/tools/blktap2/drivers/block-remus.c
>> index 079588d..4ce9dbe 100644
>> --- a/tools/blktap2/drivers/block-remus.c
>> +++ b/tools/blktap2/drivers/block-remus.c
>> @@ -602,7 +602,7 @@ static int ramdisk_start_flush(td_driver_t *driver)
>>                 }
>>                 free(sectors);
>>
>> -               hashtable_destroy (s->ramdisk.h, 0);
>> +               hashtable_destroy (s->ramdisk.h, 1);
>>         } else
>>                 s->ramdisk.prev = s->ramdisk.h;
>>
>> --
>> 1.9.3
>>
> 

  reply	other threads:[~2014-09-25  5:23 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05  9:10 [RFC Patch v3 00/18] Some bugfix patches Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 01/18] copy the correct page to memory Wen Congyang
2014-09-08 11:27   ` Ian Campbell
2014-09-08 11:58     ` Andrew Cooper
2014-09-05  9:10 ` [RFC Patch v3 02/18] csum the correct page Wen Congyang
2014-09-08 11:28   ` Ian Campbell
2014-09-05  9:10 ` [RFC Patch v3 03/18] don't zero out ioreq page Wen Congyang
2014-09-05  9:25   ` Paul Durrant
2014-09-05  9:33     ` Wen Congyang
2014-09-05  9:39       ` Paul Durrant
2014-09-05 10:45   ` David Vrabel
2014-09-12  7:33     ` Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 04/18] blktap2: dynamic allocate aio_requests to avoid -EBUSY error Wen Congyang
2014-09-08 11:34   ` Ian Campbell
2014-09-24 18:22   ` Shriram Rajagopalan
2014-09-05  9:10 ` [RFC Patch v3 05/18] blktap2: return the correct dev path Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 06/18] blktap2: use correct way to get free event id Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 07/18] blktap2: don't return negative " Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 08/18] blktap2: use correct way to define array Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 09/18] block-remus: fix memory leak Wen Congyang
2014-09-24 19:37   ` Shriram Rajagopalan
2014-09-25  5:23     ` Wen Congyang [this message]
2014-09-25 11:14       ` Shriram Rajagopalan
2014-09-26  2:29         ` Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 10/18] block-remus: pass uuid to the callback td_open Wen Congyang
2014-09-24 19:27   ` Shriram Rajagopalan
2014-09-05  9:10 ` [RFC Patch v3 11/18] block-remus: use correct way to get remus_image Wen Congyang
2014-09-24 19:26   ` Shriram Rajagopalan
2014-09-05  9:10 ` [RFC Patch v3 12/18] block-remus: fix bug in tdremus_close() Wen Congyang
2014-09-24 19:24   ` Shriram Rajagopalan
2014-09-05  9:10 ` [RFC Patch v3 13/18] don't call client_flush() when switching to unprotected mode Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 14/18] pass correct file to qemu if we use blktap2 Wen Congyang
2014-09-08 11:35   ` Ian Campbell
2014-09-05  9:10 ` [RFC Patch v3 15/18] support blktap remus in xl Wen Congyang
2014-09-08 11:39   ` Ian Campbell
2014-09-10  7:19     ` Wen Congyang
2014-09-10 10:04       ` Ian Campbell
2014-09-10 10:36         ` Wen Congyang
2014-09-05  9:10 ` [RFC Patch v3 16/18] update libxl__device_disk_from_xs_be() to support blktap device Wen Congyang
2014-09-08 11:42   ` Ian Campbell
2014-09-09  1:57     ` Wen Congyang
2014-09-11  7:58     ` Wen Congyang
2014-09-12  8:53       ` Wei Liu
2014-09-12  9:03         ` Wen Congyang
2014-09-12 10:35           ` Wei Liu
2014-09-05  9:11 ` [RFC Patch v3 17/18] read nictype from xenstore Wen Congyang
2014-09-08 11:41   ` Ian Campbell
2014-09-05  9:11 ` [RFC Patch v3 18/18] x86/hvm: Always set pending event injection when loading VMC[BS] state Wen Congyang
2014-09-10 15:06   ` Aravind Gopalakrishnan
2014-09-11  6:10     ` Wen Congyang
2014-09-11 10:35     ` Tim Deegan
2014-09-12  3:14       ` Wen Congyang
2014-09-12 15:43         ` Tim Deegan
2014-09-17  7:56       ` Wen Congyang
2014-09-17 14:29         ` Aravind Gopalakrishnan
2014-09-18  0:05         ` Aravind Gopalakrishnan
2014-09-18  0:05   ` Aravind Gopalakrishnan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5423A6B8.4050001@cn.fujitsu.com \
    --to=wency@cn.fujitsu.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=ian.campbell@citrix.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=rshriram@cs.ubc.ca \
    --cc=xen-devel@lists.xen.org \
    --cc=yanghy@cn.fujitsu.com \
    --cc=yunhong.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.