Skip to content

Commit

Permalink
divamnt: BKL pushdown
Browse files Browse the repository at this point in the history
Put explicit lock_kernel() calls into maint_open().

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
  • Loading branch information
Jonathan Corbet committed Jun 20, 2008
1 parent a237f3b commit 3462032
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions drivers/isdn/hardware/eicon/divamnt.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/poll.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>

#include "platform.h"
Expand Down Expand Up @@ -127,14 +128,19 @@ static unsigned int maint_poll(struct file *file, poll_table * wait)

static int maint_open(struct inode *ino, struct file *filep)
{
int ret;

lock_kernel();
/* only one open is allowed, so we test
it atomically */
if (test_and_set_bit(0, &opened))
return (-EBUSY);

filep->private_data = NULL;

return nonseekable_open(ino, filep);
ret = -EBUSY;
else {
filep->private_data = NULL;
ret = nonseekable_open(ino, filep);
}
unlock_kernel();
return ret;
}

static int maint_close(struct inode *ino, struct file *filep)
Expand Down

0 comments on commit 3462032

Please sign in to comment.