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.