#include <linux/device.h>
#include <linux/ioport.h>
#include <linux/module.h>
+#include <linux/smp_lock.h>
#include <linux/uaccess.h>
#include <linux/fs.h>
#include <asm/dma.h>
static int coreb_open(struct inode *inode, struct file *file)
{
+ lock_kernel();
spin_lock_irq(&coreb_lock);
if (coreb_status & COREB_IS_OPEN)
coreb_status |= COREB_IS_OPEN;
spin_unlock_irq(&coreb_lock);
+ unlock_kernel();
return 0;
out_busy:
spin_unlock_irq(&coreb_lock);
+ unlock_kernel();
return -EBUSY;
}