diff options
| author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-10-20 15:01:58 -0400 |
|---|---|---|
| committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-12-07 15:31:38 -0500 |
| commit | 7b900c12cd689e4372afe3904a03f98253546449 (patch) | |
| tree | df2d71bb71627059e065451bf2c7af734ecd15a3 | |
| parent | 75dcf5dc5a0dc4e895944368780cc2fc40008a55 (diff) | |
dv1394: remove BKL contention
Purges the one remaining call to lock_kernel() from the 1394 subsystem.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| -rw-r--r-- | drivers/ieee1394/dv1394.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/ieee1394/dv1394.c b/drivers/ieee1394/dv1394.c index 6c72f04b2b5d..d0e11c176c3b 100644 --- a/drivers/ieee1394/dv1394.c +++ b/drivers/ieee1394/dv1394.c | |||
| @@ -1536,27 +1536,20 @@ static ssize_t dv1394_read(struct file *file, char __user *buffer, size_t count | |||
| 1536 | 1536 | ||
| 1537 | static long dv1394_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 1537 | static long dv1394_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
| 1538 | { | 1538 | { |
| 1539 | struct video_card *video; | 1539 | struct video_card *video = file_to_video_card(file); |
| 1540 | unsigned long flags; | 1540 | unsigned long flags; |
| 1541 | int ret = -EINVAL; | 1541 | int ret = -EINVAL; |
| 1542 | void __user *argp = (void __user *)arg; | 1542 | void __user *argp = (void __user *)arg; |
| 1543 | 1543 | ||
| 1544 | DECLARE_WAITQUEUE(wait, current); | 1544 | DECLARE_WAITQUEUE(wait, current); |
| 1545 | 1545 | ||
| 1546 | lock_kernel(); | ||
| 1547 | video = file_to_video_card(file); | ||
| 1548 | |||
| 1549 | /* serialize this to prevent multi-threaded mayhem */ | 1546 | /* serialize this to prevent multi-threaded mayhem */ |
| 1550 | if (file->f_flags & O_NONBLOCK) { | 1547 | if (file->f_flags & O_NONBLOCK) { |
| 1551 | if (!mutex_trylock(&video->mtx)) { | 1548 | if (!mutex_trylock(&video->mtx)) |
| 1552 | unlock_kernel(); | ||
| 1553 | return -EAGAIN; | 1549 | return -EAGAIN; |
| 1554 | } | ||
| 1555 | } else { | 1550 | } else { |
| 1556 | if (mutex_lock_interruptible(&video->mtx)) { | 1551 | if (mutex_lock_interruptible(&video->mtx)) |
| 1557 | unlock_kernel(); | ||
| 1558 | return -ERESTARTSYS; | 1552 | return -ERESTARTSYS; |
| 1559 | } | ||
| 1560 | } | 1553 | } |
| 1561 | 1554 | ||
| 1562 | switch(cmd) | 1555 | switch(cmd) |
| @@ -1780,7 +1773,6 @@ static long dv1394_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
| 1780 | 1773 | ||
| 1781 | out: | 1774 | out: |
| 1782 | mutex_unlock(&video->mtx); | 1775 | mutex_unlock(&video->mtx); |
| 1783 | unlock_kernel(); | ||
| 1784 | return ret; | 1776 | return ret; |
| 1785 | } | 1777 | } |
| 1786 | 1778 | ||
