I've pushed some changes to the check_unwind.c script so now the results say which function allocated it. I still haven't added the alloc_pages() and related functions to the function table. I need to do that. I'm also still thinking about the correct solution to the return_implies_param_key_exact() problem. I guess on my system, I just hardcoded the return values. There is no harm in pushing that so let me do that. There are bunch of common false positives like: 1) put_device() frees the page. I've been sort of working towards making put_device() handled in the correct way where we figure out what function it calls and parse the container_of() correctly and then it's all handled transparently by the check_kernel.c. But for now probably the right thing is to add a special case to check_unwind.c. 2) Arrays. Again, probably add a special case in check_unwind.c 3) Direct calls to a function which frees pointers from container_of(). Eventually this will work correctly. Another option for this would be to do what check_locking does and just record whenever a function frees something and then in the caller try to guess which resource it was based on the name. So there is quite a bit of work which can be done still. regards, dan carpenter