Yeah. The re-work to scoped_guard() has landed in linux next. It does
something like:
for (struct lock __cleanup(destroy) = constructor;
is_not_optional || took_lock();
goto done_label)
if (0) {
done_label: break;
} else
Smatch has always ignored if (0) statements because it never occured to me
that there would be a label statement in there. But also because of the way
that Smatch handles loops, this was always going to need to be handled
specially.
I'll try push something today.
regards,
dan carpenter