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