summaryrefslogtreecommitdiff
path: root/sound/sound_core.c
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2008-05-16 02:39:03 +0400
committerJonathan Corbet <corbet@lwn.net>2008-06-21 00:05:50 +0400
commit78a3c3d7c6b89085610edfe86f7790144afc737e (patch)
treeb3f4937a220655b7a6a5221bf8d544c8e62d19f7 /sound/sound_core.c
parentfc7f687a6878e19f7ce58cb8a65659cd2730b586 (diff)
downloadlinux-78a3c3d7c6b89085610edfe86f7790144afc737e.tar.xz
sound: cdev lock_kernel() pushdown
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'sound/sound_core.c')
-rw-r--r--sound/sound_core.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/sound_core.c b/sound/sound_core.c
index 46daca175502..dcfc1d5ce631 100644
--- a/sound/sound_core.c
+++ b/sound/sound_core.c
@@ -37,6 +37,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
+#include <linux/smp_lock.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/fs.h>
@@ -464,6 +465,8 @@ 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 */
{
@@ -511,9 +514,11 @@ int soundcore_open(struct inode *inode, struct file *file)
file->f_op = fops_get(old_fops);
}
fops_put(old_fops);
+ unlock_kernel();
return err;
}
spin_unlock(&sound_loader_lock);
+ unlock_kernel();
return -ENODEV;
}