|
@@ -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);
|
|
|
}
|
|
|
|