forked from Minki/linux
usbcore: cdev lock_kernel() pushdown
usb_open() is protected by a down_read(&minor_rwsem), but I'm not sure I trust it to protect everything including subsidiary open() functions. Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
1bcaa0bd6f
commit
20613f24bc
@ -18,6 +18,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
#include "usb.h"
|
||||
@ -33,6 +34,7 @@ static int usb_open(struct inode * inode, struct file * file)
|
||||
int err = -ENODEV;
|
||||
const struct file_operations *old_fops, *new_fops = NULL;
|
||||
|
||||
lock_kernel();
|
||||
down_read(&minor_rwsem);
|
||||
c = usb_minors[minor];
|
||||
|
||||
@ -51,6 +53,7 @@ static int usb_open(struct inode * inode, struct file * file)
|
||||
fops_put(old_fops);
|
||||
done:
|
||||
up_read(&minor_rwsem);
|
||||
unlock_kernel();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user