How to check if my kernel driver is leaking memory

Valdis.Kletnieks at vt.edu Valdis.Kletnieks at vt.edu
Mon Mar 10 09:58:39 EDT 2014


On Sun, 09 Mar 2014 22:14:24 -0700, m silverstri said:

> I am developing a kernel driver. What should I test to make sure my
> kernel driver is not leaking memory?

1) The brute force method - just add lots of printk's that have
"allocating 25-byte frobozz struct" and "freeing 25-byte frobozz struct"
and make sure they match up.

2) kmemleak.

> 1. under normal operation (when applications open and close my driver properly)
> 2. in error situation (when application open my driver and then it
> crashes without close my driver property)

Case (2) shouldn't happen, as even if a program crashes the kernel *should*
be invoking the cleanup of open files at process termination.

A more common cause of memory leaks is for an open() or read/write/ioctl()
path to allocate N chunks of memory, hit an error, and return after having
cleaned up only N-1 of the chunks.  This is part of why most kernel code
uses a 'goto error' structure with only one return; at the end of the function.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 848 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140310/3ae80b6f/attachment.bin 


More information about the Kernelnewbies mailing list