Re: 2.6.17-rc5-mm3: bad unlock ordering (reiser4?)

Ingo Molnar
2006-06-04T21:35:15Z

* Valdis.Kletnieks@vt.edu <Valdis.Kletnieks@vt.edu> wrote:

> On Sun, 04 Jun 2006 13:33:26 PDT, Andrew Morton said:
>
> > Why does the locking validator complain about unlocking ordering?
>
> Presumably, if the lock nesting *should* be "take A, take B, release
> B, release A", if it sees "Take A, Take B, release A" it means there's
> potentially a missing 'release B' that got forgotten (most likely an
> error case that does a 'return;' instead of a 'goto
> end_of_function_cleanup' like we usually code.
>
> Having said that, I'm not sure it qualifies as a "BUG". Certainly
> would qualify for a "SMELLS_FISHY" though. But we don't have one of
> those handy, so maybe BUG is as good as it gets (given that the person
> who built the kernel *asked* to be nagged about locking funkyness)....

yes. This warning caught a couple of bugs, and documented a couple of
'fishy' places. Sometimes it's code that is totally correct. I think
it's worth the extra iteration, there arent that many non-nested
unlocking places.

straight nested unlocking is also best for performance and scalability:
the outmost lock should be released last, because that's what the
waiters are most likely to be blocking/spinning upon.

nevertheless i'll turn that warning into a less scary message.

Ingo