USB-BKL: Remove BKL use in uhci-debug
BKL was not really needed, just came from earlier push downs. The only part that's a bit dodgy is the lseek function. Would need another lock or atomic access to fpos on 32bit? Better to have a libfs lseek Signed-off-by: Andi Kleen <ak@linux.intel.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
0daeed381c
Коммит
00b81fb23a
|
@ -495,18 +495,16 @@ static int uhci_debug_open(struct inode *inode, struct file *file)
|
|||
{
|
||||
struct uhci_hcd *uhci = inode->i_private;
|
||||
struct uhci_debug *up;
|
||||
int ret = -ENOMEM;
|
||||
unsigned long flags;
|
||||
|
||||
lock_kernel();
|
||||
up = kmalloc(sizeof(*up), GFP_KERNEL);
|
||||
if (!up)
|
||||
goto out;
|
||||
return -ENOMEM;
|
||||
|
||||
up->data = kmalloc(MAX_OUTPUT, GFP_KERNEL);
|
||||
if (!up->data) {
|
||||
kfree(up);
|
||||
goto out;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
up->size = 0;
|
||||
|
@ -517,10 +515,7 @@ static int uhci_debug_open(struct inode *inode, struct file *file)
|
|||
|
||||
file->private_data = up;
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
unlock_kernel();
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
|
||||
|
@ -528,9 +523,9 @@ static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
|
|||
struct uhci_debug *up;
|
||||
loff_t new = -1;
|
||||
|
||||
lock_kernel();
|
||||
up = file->private_data;
|
||||
|
||||
/* XXX: atomic 64bit seek access, but that needs to be fixed in the VFS */
|
||||
switch (whence) {
|
||||
case 0:
|
||||
new = off;
|
||||
|
@ -539,11 +534,10 @@ static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
|
|||
new = file->f_pos + off;
|
||||
break;
|
||||
}
|
||||
if (new < 0 || new > up->size) {
|
||||
unlock_kernel();
|
||||
|
||||
if (new < 0 || new > up->size)
|
||||
return -EINVAL;
|
||||
}
|
||||
unlock_kernel();
|
||||
|
||||
return (file->f_pos = new);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче