]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/sound_core.c
sdhci: graceful handling of bad addresses
[linux-2.6-omap-h63xx.git] / sound / sound_core.c
index 46daca1755028d9ac73a4270deda963a11ef6cc9..dcfc1d5ce63173e5c636cc344d391889a1236611 100644 (file)
@@ -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;
 }