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/init.h>
|
||||||
#include <linux/kmod.h>
|
#include <linux/kmod.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/smp_lock.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
|
||||||
@ -496,6 +497,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||||||
|
|
||||||
if(minor>=VIDEO_NUM_DEVICES)
|
if(minor>=VIDEO_NUM_DEVICES)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
lock_kernel();
|
||||||
mutex_lock(&videodev_lock);
|
mutex_lock(&videodev_lock);
|
||||||
vfl=video_device[minor];
|
vfl=video_device[minor];
|
||||||
if(vfl==NULL) {
|
if(vfl==NULL) {
|
||||||
@ -505,6 +507,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||||||
vfl=video_device[minor];
|
vfl=video_device[minor];
|
||||||
if (vfl==NULL) {
|
if (vfl==NULL) {
|
||||||
mutex_unlock(&videodev_lock);
|
mutex_unlock(&videodev_lock);
|
||||||
|
unlock_kernel();
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -518,6 +521,7 @@ static int video_open(struct inode *inode, struct file *file)
|
|||||||
}
|
}
|
||||||
fops_put(old_fops);
|
fops_put(old_fops);
|
||||||
mutex_unlock(&videodev_lock);
|
mutex_unlock(&videodev_lock);
|
||||||
|
unlock_kernel();
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user