Re: [PATCH] sound_core.c: Remove BKL from soundcore_open

From: John Kacur
Date: Sat Oct 10 2009 - 20:28:11 EST




On Sun, 11 Oct 2009, Alan Cox wrote:

> On Sun, 11 Oct 2009 01:24:14 +0200 (CEST)
> John Kacur <jkacur@xxxxxxxxxx> wrote:
>
> > >From 030af455d4f54482130c8eccb47fe90aaba8808c Mon Sep 17 00:00:00 2001
> > From: John Kacur <jkacur@xxxxxxxxxx>
> > Date: Sat, 10 Oct 2009 23:39:56 +0200
> > Subject: [PATCH] This code is already protected by spin_lock, and doesn't require the bkl
>
> Sorry but I don't think that is true becaue of:
>
> spin_unlock(&sound_loader_lock);
> if(file->f_op->open)
> err = file->f_op->open(inode,file);
>
>
> So the underlying driver open method expects lock_kernel status and you
> don't propogate it down. You really need to track down each thing that
> can be called into here and fix it, or maybe just punt for the moment and
> push it down to
>
> {
> lock_kernel()
> err = file-f_op->open ...
> unlock_kernel()
> }
>
> so its obvious to the next person who takes up the war on the BKL what is
> to be tackled.
>

Yikes, I missed that. Still I'm loath to just push it down like that. I
wonder if I can use a mutex there. What about the following patch?