check_free_strict: New stricter cross function use after free check
The normal check_frees_param.c records that a function frees a param if
every path through the function frees the param (or the param is NULL).
But there are other functions which maybe only free the param on error or
in certain paths through the function. This is much more ambitious to
check for those cases, but it's what the check does.
The new check is kernel only because there are a lot of places where we
only free the last user. The overwhelming most common way for the kernel
to determine the last user is by doing an atomic_inc() when we have a new
user and an atomic_dec() when the user is done. This check looks for that
specifically so it would probably have a lot of false positives in
non-kernel code.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>