提交 00b81fb2 编写于 作者: A Andi Kleen 提交者: Greg Kroah-Hartman

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: NAndi Kleen <ak@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 0daeed38
...@@ -495,18 +495,16 @@ static int uhci_debug_open(struct inode *inode, struct file *file) ...@@ -495,18 +495,16 @@ static int uhci_debug_open(struct inode *inode, struct file *file)
{ {
struct uhci_hcd *uhci = inode->i_private; struct uhci_hcd *uhci = inode->i_private;
struct uhci_debug *up; struct uhci_debug *up;
int ret = -ENOMEM;
unsigned long flags; unsigned long flags;
lock_kernel();
up = kmalloc(sizeof(*up), GFP_KERNEL); up = kmalloc(sizeof(*up), GFP_KERNEL);
if (!up) if (!up)
goto out; return -ENOMEM;
up->data = kmalloc(MAX_OUTPUT, GFP_KERNEL); up->data = kmalloc(MAX_OUTPUT, GFP_KERNEL);
if (!up->data) { if (!up->data) {
kfree(up); kfree(up);
goto out; return -ENOMEM;
} }
up->size = 0; up->size = 0;
...@@ -517,10 +515,7 @@ static int uhci_debug_open(struct inode *inode, struct file *file) ...@@ -517,10 +515,7 @@ static int uhci_debug_open(struct inode *inode, struct file *file)
file->private_data = up; file->private_data = up;
ret = 0; return 0;
out:
unlock_kernel();
return ret;
} }
static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence) 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) ...@@ -528,9 +523,9 @@ static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
struct uhci_debug *up; struct uhci_debug *up;
loff_t new = -1; loff_t new = -1;
lock_kernel();
up = file->private_data; up = file->private_data;
/* XXX: atomic 64bit seek access, but that needs to be fixed in the VFS */
switch (whence) { switch (whence) {
case 0: case 0:
new = off; new = off;
...@@ -539,11 +534,10 @@ static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence) ...@@ -539,11 +534,10 @@ static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
new = file->f_pos + off; new = file->f_pos + off;
break; break;
} }
if (new < 0 || new > up->size) {
unlock_kernel(); if (new < 0 || new > up->size)
return -EINVAL; return -EINVAL;
}
unlock_kernel();
return (file->f_pos = new); return (file->f_pos = new);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册