unwind: catch additional bugs
Ok, this clears up the mystery with the &unknown state. Before if the
function was freed on some paths then it was considered freed. That was
kind of dumb but it mostly worked because we were mostly dealing with split
apart error paths.
Now the new system is "if we have a simple release set the state to
&release but if we are lost set the state to &unknown and that silences
all the paths." &unknown is more powerful than &release for silencing
warnings.
Signed-off-by: Dan Carpenter <error27@gmail.com>