evecv/memory leak



I am (with extreme reluctance) using a 3rd party kernel module that I
do not trust. At the moment, I'm having difficulty with a process that
looks like:

while(1) {
process_stuff(); /* This only returns on error.*/
clean_up();
}

The clean_up() routine calls several proprietary free() type
calls, and I simply don't think they are doing the right thing.
clean_up() seems to work only about 75% of the time, and since
process_stuff() returns about every 24 hours, the process is
in a bad state after 3 or 4 days. Once clean_up() fails once,
proces_stuff() starts returning immediately, and
it never recovers. I kill the process and start another instance.

I was thinking of replacing clean_up() with an exec that simply
calls itself. ie, the program will now look like:
int
main(int ac, char **av)
{
process_stuff();
execv(av[0],av);
}

The question is: is this identical to killing the process and
restarting? Basically, I'm trying to avoid using the proprietary
free() calls...does this accomplish that safely?

.