Skip to content

Commit

Permalink
dabusb: remove the BKL
Browse files Browse the repository at this point in the history
The dabusb device driver is sufficiently serialized using
its own mutex, no need for the big kernel lock here
in addition.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Arnd Bergmann committed Oct 19, 2010
1 parent a6f8dbc commit 7ff52ef
Showing 1 changed file with 3 additions and 15 deletions.
18 changes: 3 additions & 15 deletions drivers/media/video/dabusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
#include <linux/list.h>
#include <linux/vmalloc.h>
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/atomic.h>
Expand Down Expand Up @@ -621,7 +620,6 @@ static int dabusb_open (struct inode *inode, struct file *file)
if (devnum < DABUSB_MINOR || devnum >= (DABUSB_MINOR + NRDABUSB))
return -EIO;

lock_kernel();
s = &dabusb[devnum - DABUSB_MINOR];

dbg("dabusb_open");
Expand All @@ -630,21 +628,17 @@ static int dabusb_open (struct inode *inode, struct file *file)
while (!s->usbdev || s->opened) {
mutex_unlock(&s->mutex);

if (file->f_flags & O_NONBLOCK) {
if (file->f_flags & O_NONBLOCK)
return -EBUSY;
}
msleep_interruptible(500);

if (signal_pending (current)) {
unlock_kernel();
if (signal_pending (current))
return -EAGAIN;
}
mutex_lock(&s->mutex);
}
if (usb_set_interface (s->usbdev, _DABUSB_IF, 1) < 0) {
mutex_unlock(&s->mutex);
dev_err(&s->usbdev->dev, "set_interface failed\n");
unlock_kernel();
return -EINVAL;
}
s->opened = 1;
Expand All @@ -654,7 +648,6 @@ static int dabusb_open (struct inode *inode, struct file *file)
file->private_data = s;

r = nonseekable_open(inode, file);
unlock_kernel();
return r;
}

Expand Down Expand Up @@ -689,17 +682,13 @@ static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long arg

dbg("dabusb_ioctl");

lock_kernel();
if (s->remove_pending) {
unlock_kernel();
if (s->remove_pending)
return -EIO;
}

mutex_lock(&s->mutex);

if (!s->usbdev) {
mutex_unlock(&s->mutex);
unlock_kernel();
return -EIO;
}

Expand Down Expand Up @@ -735,7 +724,6 @@ static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long arg
break;
}
mutex_unlock(&s->mutex);
unlock_kernel();
return ret;
}

Expand Down

0 comments on commit 7ff52ef

Please sign in to comment.