Messages in this thread | | | Date | Sun, 11 Oct 2009 11:15:43 -0600 | From | Jonathan Corbet <> | Subject | Re: [PATCH] sound_core.c: Remove BKL from soundcore_open |
| |
On Sun, 11 Oct 2009 09:20:15 -0600 Jonathan Corbet <corbet@lwn.net> wrote:
> Changing the > BKL to a mutex is a real semantic change which requires a real survey > of the code affected.
One other aspect of this I forgot to mention...it's actually possible (if unlikely) that one of those lower-level open routines depends on the BKL's release-on-sleep semantics. Swapping in a mutex would change that behavior, possibly resulting in deadlocks.
I think it was Alan who once pointed out that the BKL is badly misnamed. It isn't really a lock, it's a modified execution environment designed to let naive kernel code think it's still running in a uniprocessor, no-preemption situation. Replacing the BKL with a different lock changes that environment, so one has to be *really* careful about looking for any assumptions which may remain in the code.
That's why BKL-hunting is harder than it looks - and why the BKL has hung around for all these years.
jon
| |