summaryrefslogtreecommitdiff
path: root/arch/blackfin
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2008-05-20 17:15:37 (GMT)
committerJonathan Corbet <corbet@lwn.net>2008-06-20 20:05:54 (GMT)
commit9a8bd2f76cb78fd730337f1b3b9cbef101ce2dad (patch)
tree8ee89ca2c10098d371a6718f0bdb10467f1474d4 /arch/blackfin
parent52e7c5e08201e20ddbe93cb1977869c38072bc2f (diff)
downloadlinux-9a8bd2f76cb78fd730337f1b3b9cbef101ce2dad.tar.xz
bf561-coreb: BKL pushdown
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/mach-bf561/coreb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/blackfin/mach-bf561/coreb.c b/arch/blackfin/mach-bf561/coreb.c
index 1b44e9e..8526478 100644
--- a/arch/blackfin/mach-bf561/coreb.c
+++ b/arch/blackfin/mach-bf561/coreb.c
@@ -32,6 +32,7 @@
#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>
@@ -196,6 +197,7 @@ static loff_t coreb_lseek(struct file *file, loff_t offset, int origin)
static int coreb_open(struct inode *inode, struct file *file)
{
+ lock_kernel();
spin_lock_irq(&coreb_lock);
if (coreb_status & COREB_IS_OPEN)
@@ -204,10 +206,12 @@ static int coreb_open(struct inode *inode, struct file *file)
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;
}