All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]Fix memory leak for copy-receiver of netfront
@ 2008-06-11  6:03 Kasai Takanori
  2008-06-11 21:33 ` Jeremy Fitzhardinge
  0 siblings, 1 reply; 3+ messages in thread
From: Kasai Takanori @ 2008-06-11  6:03 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Mail message body --]
[-- Type: text/plain, Size: 2252 bytes --]

Hi all,

We found the problem of the memory leak when working with copy-
receiver of netfront.

The source of a problem is that the fragment page is not released with 
dev_kfree_skb() because the nr_frags variable of skb is set to 0. 

This is the patch to fix memory leak in netfront.

Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com>
Signed-off-by: Hirofumi Tsujimura <tsujimura.hirof@jp.fujitsu.com>
Signed-off-by: Takanori Kasai <kasai.takanori@jp.fujitsu.com>


A guest kernel does panic if attaching and detaching VNIF is repeated.
Because guest memory becomes empty, and OOM killer is run.
It is a log of that time as follows. 

------------------------------------------------------------------------
<dom0 log>
# xm network-attach guest
# xm network-detach guest 0
# xm network-attach guest
# xm network-detach guest 1
... repeat ...
# xm network-attach guest
# xm network-detach guest 179
# xm network-attach guest
# xm network-detach guest 180
Error: Domain 'guest' does not exist.


<guest log>
# free -m
             total       used       free     shared    buffers     
cached
Mem:           512        504          8          0         23        
174
-/+ buffers/cache:        305        206
Swap:          511          0        511
... repeat ...
# free -m
             total       used       free     shared    buffers     
cached
Mem:           512        509          2          0          0          
1
-/+ buffers/cache:        507          4
Swap:          511         50        461
awk invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=-17

Call Trace:
 [<a00000010001d160>] show_stack+0x40/0xa0
                                sp=e00000001e0a7a70 bsp=e00000001e0a1480
 [<a00000010001d1f0>] dump_stack+0x30/0x60
                                sp=e00000001e0a7c40 bsp=e00000001e0a1468
 [<a00000010011b1b0>] out_of_memory+0xf0/0x780
                                sp=e00000001e0a7c40 bsp=e00000001e0a1430
 [<a000000100121040>] __alloc_pages+0x420/0x540
                                sp=e00000001e0a7cd0 bsp=e00000001e0a13b8
... snip ...
Kernel panic - not syncing: Out of memory and no killable processes...
------------------------------------------------------------------------

Best Regards,

---
Takanori Kasai

[-- Attachment #2: fix-netfront-memory-leak.patch --]
[-- Type: application/octet-stream, Size: 834 bytes --]

# HG changeset patch
# User kasai.takanori@jp.fujitsu.com
# Date 1213152670 -32400
# Node ID 34c91cf0ba1419f7660b800e0dcb7a1c335e32be
# Parent  5db911a71eac6b0b19e74398f0750ce12fb1b94b
Fix memory leak for copy-receiver of netfront.

Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com> 
Signed-off-by: Hirofumi Tsujimura <tsujimura.hirof@jp.fujitsu.com>
Signed-off-by: Takanori Kasai <kasai.takanori@jp.fujitsu.com>

diff -r 5db911a71eac -r 34c91cf0ba14 drivers/xen/netfront/netfront.c
--- a/drivers/xen/netfront/netfront.c	Tue Jun 10 08:50:39 2008 +0100
+++ b/drivers/xen/netfront/netfront.c	Wed Jun 11 11:51:10 2008 +0900
@@ -1667,7 +1667,6 @@ static void netif_release_rx_bufs_copy(s
 		np->grant_rx_ref[i] = GRANT_INVALID_REF;
 		add_id_to_freelist(np->rx_skbs, i);
 
-		skb_shinfo(skb)->nr_frags = 0;
 		dev_kfree_skb(skb);
 	}
 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH]Fix memory leak for copy-receiver of netfront
  2008-06-11  6:03 [PATCH]Fix memory leak for copy-receiver of netfront Kasai Takanori
@ 2008-06-11 21:33 ` Jeremy Fitzhardinge
  2008-06-12  1:39   ` Kasai Takanori
  0 siblings, 1 reply; 3+ messages in thread
From: Jeremy Fitzhardinge @ 2008-06-11 21:33 UTC (permalink / raw)
  To: Kasai Takanori; +Cc: xen-devel

Kasai Takanori wrote:
> Hi all,
>
> We found the problem of the memory leak when working with copy-
> receiver of netfront.
>
> The source of a problem is that the fragment page is not released with 
> dev_kfree_skb() because the nr_frags variable of skb is set to 0. 
>
> This is the patch to fix memory leak in netfront.
>   

This code doesn't apply to the current 2.6.25 version of netfront.  The 
only similar code I could see is:

                skb = np->rx_skbs[id];
                mfn = gnttab_end_foreign_transfer_ref(ref);
                gnttab_release_grant_reference(&np->gref_rx_head, ref);
                np->grant_rx_ref[id] = GRANT_INVALID_REF;

                if (0 == mfn) {
                        skb_shinfo(skb)->nr_frags = 0;
                        dev_kfree_skb(skb);
                        noxfer++;
                        continue;
                }


Would you mind reviewing the 2.6.25 version of netfront to see if it 
needs a patch?

Thanks,
    J

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH]Fix memory leak for copy-receiver of netfront
  2008-06-11 21:33 ` Jeremy Fitzhardinge
@ 2008-06-12  1:39   ` Kasai Takanori
  0 siblings, 0 replies; 3+ messages in thread
From: Kasai Takanori @ 2008-06-12  1:39 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: xen-devel

Hi Jeremy,

I reviewed the 2.6.25 versions of netfront.

First of all, the xennet_release_rx_bufs() function is freeing 
processing of flipping mode. 
Therefore, more memory leaks are generated. 

It is necessary to change to the freeing processing of the copy-receiver 
mode referring to the following patch. 
http://xenbits.xensource.com/linux-2.6.18-xen.hg?rev/41918416db51

And, if this patch that we made is applied, the memory leak will not be 
generated. 

Best Regards,

---
Takanori Kasai

---------- Original Message ----------
>Date:     2008/06/12
>From:     Jeremy Fitzhardinge <jeremy@goop.org>
>To:       Kasai Takanori <kasai.takanori@jp.fujitsu.com>
>Cc:       xen-devel <xen-devel@lists.xensource.com>
>Subject:  Re: [Xen-devel] [PATCH]Fix memory leak for copy-receiver of 
>          netfront
>
>Kasai Takanori wrote:
>> Hi all,
>>
>> We found the problem of the memory leak when working with copy-
>> receiver of netfront.
>>
>> The source of a problem is that the fragment page is not released with 
>> dev_kfree_skb() because the nr_frags variable of skb is set to 0. 
>>
>> This is the patch to fix memory leak in netfront.
>>   
>
>This code doesn't apply to the current 2.6.25 version of netfront.  The 
>only similar code I could see is:
>
>                skb = np->rx_skbs[id];
>                mfn = gnttab_end_foreign_transfer_ref(ref);
>                gnttab_release_grant_reference(&np->gref_rx_head, ref);
>                np->grant_rx_ref[id] = GRANT_INVALID_REF;
>
>                if (0 == mfn) {
>                        skb_shinfo(skb)->nr_frags = 0;
>                        dev_kfree_skb(skb);
>                        noxfer++;
>                        continue;
>                }
>
>
>Would you mind reviewing the 2.6.25 version of netfront to see if it 
>needs a patch?
>
>Thanks,
>    J
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@lists.xensource.com
>http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-06-12  1:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-11  6:03 [PATCH]Fix memory leak for copy-receiver of netfront Kasai Takanori
2008-06-11 21:33 ` Jeremy Fitzhardinge
2008-06-12  1:39   ` Kasai Takanori

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.