Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes...
[sfrench/cifs-2.6.git] / drivers / media / radio / miropcm20-rds.c
index c93490ec96bb7b2f5a4145047e5730fefbf29c9b..3e840f74d45cc217f3443b43df248904cb650b61 100644 (file)
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/smp_lock.h>
 #include <linux/fs.h>
 #include <linux/miscdevice.h>
-#include <linux/sched.h>       /* current, TASK_*, schedule_timeout() */
 #include <linux/delay.h>
 #include <asm/uaccess.h>
 #include "miropcm20-rds-core.h"
 
 static char * text_buffer;
-static int rds_users = 0;
+static int rds_users;
 
 
 static int rds_f_open(struct inode *in, struct file *fi)
@@ -28,13 +28,16 @@ static int rds_f_open(struct inode *in, struct file *fi)
        if (rds_users)
                return -EBUSY;
 
+       lock_kernel();
        rds_users++;
        if ((text_buffer=kmalloc(66, GFP_KERNEL)) == 0) {
                rds_users--;
                printk(KERN_NOTICE "aci-rds: Out of memory by open()...\n");
+               unlock_kernel();
                return -ENOMEM;
        }
 
+       unlock_kernel();
        return 0;
 }