lkml.org 
[lkml]   [2010]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 7/8] soundcore_open: Reduce the area BKL coverage
At Sun,  4 Jul 2010 00:02:31 +0200,
Arnd Bergmann wrote:
>
> From: John Kacur <jkacur@redhat.com>
>
> Most of this function is protected by the sound_loader_lock.
> We can push down the BKL to this call out err = file->f_op->open(inode,file);
>
> In order to build the sound core without the BKL, we
> will need to push the lock_kernel() call into the ~20
> device drivers that register their file operations.
>
> Signed-off-by: John Kacur <jkacur@redhat.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Acked-by: Alan Cox <alan@linux.intel.com>
> Cc: Takashi Iwai <tiwai@suse.de>

I applied this one to sound git tree now. Thanks!


Takashi

> ---
> sound/sound_core.c | 13 ++++++++-----
> 1 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/sound/sound_core.c b/sound/sound_core.c
> index 7c2d677..c8627fc 100644
> --- a/sound/sound_core.c
> +++ b/sound/sound_core.c
> @@ -576,8 +576,6 @@ static int soundcore_open(struct inode *inode, struct file *file)
> struct sound_unit *s;
> const struct file_operations *new_fops = NULL;
>
> - lock_kernel ();
> -
> chain=unit&0x0F;
> if(chain==4 || chain==5) /* dsp/audio/dsp16 */
> {
> @@ -630,18 +628,23 @@ static int soundcore_open(struct inode *inode, struct file *file)
> const struct file_operations *old_fops = file->f_op;
> file->f_op = new_fops;
> spin_unlock(&sound_loader_lock);
> - if(file->f_op->open)
> +
> + if (file->f_op->open) {
> + /* TODO: push down BKL into indivial open functions */
> + lock_kernel();
> err = file->f_op->open(inode,file);
> + unlock_kernel();
> + }
> +
> if (err) {
> fops_put(file->f_op);
> file->f_op = fops_get(old_fops);
> }
> +
> fops_put(old_fops);
> - unlock_kernel();
> return err;
> }
> spin_unlock(&sound_loader_lock);
> - unlock_kernel();
> return -ENODEV;
> }
>
> --
> 1.7.1
>


\
 
 \ /
  Last update: 2010-07-05 18:11    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site