Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00b81fb2 authored by Andi Kleen's avatar Andi Kleen Committed by Greg Kroah-Hartman
Browse files

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: default avatarAndi Kleen <ak@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0daeed38
Loading
Loading
Loading
Loading
+7 −13
Original line number Original line Diff line number Diff line
@@ -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)


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