USB-BKL: Remove BKL use in uhci-debug
authorAndi Kleen <ak@linux.intel.com>
Tue, 1 Jun 2010 21:04:43 +0000 (23:04 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Aug 2010 21:35:36 +0000 (14:35 -0700)
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>
drivers/usb/host/uhci-debug.c

index 98cf0b26b9684b2da11b7aa2c0628196479cc2a1..c168999722d148c86cf5e8d55f0f3a3dece10c9b 100644 (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_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);
 }