videodev: BKL pushdown
Put explicit lock_kernel() calls into videodev_open(). That function itself seems OK, but one never knows about all the open() functions provided by underlying video drivers. Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
b5b4aa67da
commit
6606470dd1
|
@ -36,6 +36,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/kmod.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
|
@ -496,6 +497,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||
|
||||
if(minor>=VIDEO_NUM_DEVICES)
|
||||
return -ENODEV;
|
||||
lock_kernel();
|
||||
mutex_lock(&videodev_lock);
|
||||
vfl=video_device[minor];
|
||||
if(vfl==NULL) {
|
||||
|
@ -505,6 +507,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||
vfl=video_device[minor];
|
||||
if (vfl==NULL) {
|
||||
mutex_unlock(&videodev_lock);
|
||||
unlock_kernel();
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
@ -518,6 +521,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||
}
|
||||
fops_put(old_fops);
|
||||
mutex_unlock(&videodev_lock);
|
||||
unlock_kernel();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue