<div>Sankar and All,</div>
<div> </div>
<div>I followed blow investigation on detecting kernel memory leak. I got different o/p which is different from yours shown.</div>
<div>ie, 4 and 5 lines are addresses in the backtrace and not function names.</div>
<div><a href="http://psankar.blogspot.com/2010/11/detecting-memory-leaks-in-kernel.html">http://psankar.blogspot.com/2010/11/detecting-memory-leaks-in-kernel.html</a></div>
<div> </div>
<div>  comm &quot;insmod&quot;, pid 1559, jiffies 4294961804 (age 229.610s)<br>  hex dump (first 32 bytes):<br>    fa 3e 00 00 00 00 00 00 92 5a 00 00 00 00 00 00  .&gt;.......Z......<br>    0a 00 00 00 12 00 00 00 3c 38 00 00 00 00 00 00  ........&lt;8......<br>
  backtrace:<br>    [&lt;ffffffff8156eb1d&gt;] kmemleak_alloc+0x2d/0x60<br>    [&lt;ffffffff81152469&gt;] __vmalloc_node+0xc9/0xe0<br>    [&lt;ffffffff8115280c&gt;] vmalloc+0x2c/0x30<br>    [&lt;ffffffffa0099047&gt;] 0xffffffffa0099047<br>
    [&lt;ffffffffa009906c&gt;] 0xffffffffa009906c<br>    [&lt;ffffffff8100204c&gt;] do_one_initcall+0x3c/0x1a0<br>    [&lt;ffffffff810cea1b&gt;] sys_init_module+0xbb/0x200<br>    [&lt;ffffffff81041072&gt;] system_call_fastpath+0x16/0x1b<br>
    [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff<br><br><br></div>
<div class="gmail_quote">On Wed, Oct 27, 2010 at 12:24 PM, Sankar P <span dir="ltr">&lt;<a href="mailto:sankar.curiosity@gmail.com">sankar.curiosity@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi Dave, Rajat, Mulyadi and everyone,<br><br><br>Thanks for your pointers.<br><br>Now I removed the &quot;static __init&quot; from the hello_init function and I<br>
got an output of:<br><br>unreferenced object 0xf9042000 (size 512):<br> comm &quot;insmod&quot;, pid 12068, jiffies 13995923 (age 51.096s)<br>
<div class="im"> hex dump (first 32 bytes):<br></div>   6f 64 75 6c 65 00 00 00 00 00 00 2e 73 79 6d 74  odule.......symt<br>   61 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74  ab..strtab..shst<br>
<div class="im"> backtrace:<br>   [&lt;c10b0001&gt;] create_object+0x114/0x1db<br>   [&lt;c148b4d0&gt;] kmemleak_alloc+0x21/0x3f<br>   [&lt;c10a43e9&gt;] __vmalloc_node+0x83/0x90<br>   [&lt;c10a44b9&gt;] vmalloc+0x1c/0x1e<br>
</div>   [&lt;f9036021&gt;] init_module+0x21/0x2f [hello_kernel]<br>
<div class="im">   [&lt;c1001226&gt;] do_one_initcall+0x71/0x113<br>   [&lt;c1056c48&gt;] sys_init_module+0x1241/0x1430<br>   [&lt;c100284c&gt;] sysenter_do_call+0x12/0x22<br>   [&lt;ffffffff&gt;] 0xffffffff<br><br><br></div>
And, if I create a new function named myfunc and do my allocations<br>inside that function (instead of the init function), even though I<br>have a &quot;static __init&quot; text in the init_function I get an output:<br><br>
unreferenced object 0xf9061000 (size 512):<br> comm &quot;insmod&quot;, pid 12750, jiffies 14401507 (age 110.217s)<br>
<div class="im"> hex dump (first 32 bytes):<br></div>   1c 0f 00 00 01 12 00 00 2a 0f 00 00 01 12 00 00  ........*.......<br>   38 0f 00 00 01 12 00 00 bc 0f 00 00 01 12 00 00  8...............<br>
<div class="im"> backtrace:<br>   [&lt;c10b0001&gt;] create_object+0x114/0x1db<br>   [&lt;c148b4d0&gt;] kmemleak_alloc+0x21/0x3f<br>   [&lt;c10a43e9&gt;] __vmalloc_node+0x83/0x90<br>   [&lt;c10a44b9&gt;] vmalloc+0x1c/0x1e<br>
</div>   [&lt;f9055021&gt;] myfunc+0x21/0x23 [hello_kernel]<br>   [&lt;f9058012&gt;] 0xf9058012<br>
<div class="im">   [&lt;c1001226&gt;] do_one_initcall+0x71/0x113<br>   [&lt;c1056c48&gt;] sys_init_module+0x1241/0x1430<br>   [&lt;c100284c&gt;] sysenter_do_call+0x12/0x22<br>   [&lt;ffffffff&gt;] 0xffffffff<br><br></div>
As we can see from the above output, it shows both the function name<br>as well as the module name where the leak is happening. Also the<br>address of the statement. So, my problem seems to be solved. Thank you<br>all for your pointers.<br>
<br>Sorry for the top post and long contents.<br><br>On Thu, Oct 28, 2010 at 12:00 AM, Rajat Sharma &lt;<a href="mailto:fs.rajat@gmail.com">fs.rajat@gmail.com</a>&gt; wrote:<br>&gt; try removing static __init from function definition<br>

<div>
<div></div>
<div class="h5">&gt; On Wed, Oct 27, 2010 at 10:40 PM, Sankar P &lt;<a href="mailto:sankar.curiosity@gmail.com">sankar.curiosity@gmail.com</a>&gt;<br>&gt; wrote:<br>&gt;&gt;<br>&gt;&gt; Hi,<br>&gt;&gt;<br>&gt;&gt; I have an out of tree kernel module with the source:<br>
&gt;&gt;<br>&gt;&gt; static __init int hello_init(void)<br>&gt;&gt; {<br>&gt;&gt;       char *ptr;<br>&gt;&gt;       ptr = vmalloc(512);<br>&gt;&gt;       ptr = vmalloc(512);<br>&gt;&gt;       ptr = vmalloc(512);<br>&gt;&gt;<br>
&gt;&gt;       printk(KERN_ALERT &quot;Hello World&quot;);<br>&gt;&gt;<br>&gt;&gt;       return 0;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt; Now I compile this file (hello.c) using my Makefile as follows:<br>&gt;&gt;<br>&gt;&gt; EXTRA_CFLAGS=-g<br>
&gt;&gt; obj-m := hello-kernel.o<br>&gt;&gt; hello-kernel-objs := hello.o<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Now if I insmod my hello-kernel.ko file and then do a `cat<br>&gt;&gt; /sys/kernel/debug/kmemleak` I get an output:<br>
&gt;&gt;<br>&gt;&gt; unreferenced object 0xf8211000 (size 512):<br>&gt;&gt;  comm &quot;insmod&quot;, pid 9602, jiffies 3666022 (age 1553.469s)<br>&gt;&gt;  hex dump (first 32 bytes):<br>&gt;&gt;   01 12 00 00 f2 10 00 00 01 12 00 00 fe 10 00 00  ................<br>
&gt;&gt;   01 12 00 00 0c 11 00 00 01 12 00 00 1a 11 00 00  ................<br>&gt;&gt;  backtrace:<br>&gt;&gt;   [&lt;c10b0001&gt;] create_object+0x114/0x1db<br>&gt;&gt;   [&lt;c148b4d0&gt;] kmemleak_alloc+0x21/0x3f<br>
&gt;&gt;   [&lt;c10a43e9&gt;] __vmalloc_node+0x83/0x90<br>&gt;&gt;   [&lt;c10a44b9&gt;] vmalloc+0x1c/0x1e<br>&gt;&gt;   [&lt;f8208021&gt;] 0xf8208021<br>&gt;&gt;   [&lt;c1001226&gt;] do_one_initcall+0x71/0x113<br>&gt;&gt;   [&lt;c1056c48&gt;] sys_init_module+0x1241/0x1430<br>
&gt;&gt;   [&lt;c100284c&gt;] sysenter_do_call+0x12/0x22<br>&gt;&gt;   [&lt;ffffffff&gt;] 0xffffffff<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; I understand that the kmemleak has correctly detected the memory leak.<br>&gt;&gt; But why is the leak showing in insmod , instead of the actual function<br>
&gt;&gt; name &quot;hello_init&quot;. Is there a way we can get the exact location inside<br>&gt;&gt; the hello.c file printed instead of the generic &quot;insmod&quot; location  ?<br>&gt;&gt;<br>&gt;&gt; If I do a `gdb hello-kernel.ko`, the symbols are properly resolved, so<br>
&gt;&gt; I am sure the .ko file has symbols.<br>&gt;&gt;<br>&gt;&gt; Any help will be appreciated. Thank you.<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Sankar P<br>&gt;&gt; <a href="http://psankar.blogspot.com/" target="_blank">http://psankar.blogspot.com</a><br>
&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; To unsubscribe from this list: send an email with<br>&gt;&gt; &quot;unsubscribe kernelnewbies&quot; to <a href="mailto:ecartis@nl.linux.org">ecartis@nl.linux.org</a><br>&gt;&gt; Please read the FAQ at <a href="http://kernelnewbies.org/FAQ" target="_blank">http://kernelnewbies.org/FAQ</a><br>
&gt;&gt;<br>&gt;<br>&gt;<br><br><br><br>--<br>Sankar P<br><a href="http://psankar.blogspot.com/" target="_blank">http://psankar.blogspot.com</a><br><br>--<br>To unsubscribe from this list: send an email with<br>&quot;unsubscribe kernelnewbies&quot; to <a href="mailto:ecartis@nl.linux.org">ecartis@nl.linux.org</a><br>
Please read the FAQ at <a href="http://kernelnewbies.org/FAQ" target="_blank">http://kernelnewbies.org/FAQ</a><br><br></div></div></blockquote></div><br><br clear="all"><br>-- <br>Regards,<br>S. Sengottuvelan.<br>