Commit 44c389a0 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman

USB: gadget: Push BKL down into drivers

This keeps the gadget ioctl method wrapped but pushes the BKL down into
the gadget code so we can use unlocked_ioctl().
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0391c828
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/poll.h> #include <linux/poll.h>
#include <linux/smp_lock.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
...@@ -483,8 +484,7 @@ ep_release (struct inode *inode, struct file *fd) ...@@ -483,8 +484,7 @@ ep_release (struct inode *inode, struct file *fd)
return 0; return 0;
} }
static int ep_ioctl (struct inode *inode, struct file *fd, static long ep_ioctl(struct file *fd, unsigned code, unsigned long value)
unsigned code, unsigned long value)
{ {
struct ep_data *data = fd->private_data; struct ep_data *data = fd->private_data;
int status; int status;
...@@ -740,7 +740,7 @@ static const struct file_operations ep_io_operations = { ...@@ -740,7 +740,7 @@ static const struct file_operations ep_io_operations = {
.read = ep_read, .read = ep_read,
.write = ep_write, .write = ep_write,
.ioctl = ep_ioctl, .unlocked_ioctl = ep_ioctl,
.release = ep_release, .release = ep_release,
.aio_read = ep_aio_read, .aio_read = ep_aio_read,
...@@ -1294,15 +1294,18 @@ ep0_poll (struct file *fd, poll_table *wait) ...@@ -1294,15 +1294,18 @@ ep0_poll (struct file *fd, poll_table *wait)
return mask; return mask;
} }
static int dev_ioctl (struct inode *inode, struct file *fd, static long dev_ioctl (struct file *fd, unsigned code, unsigned long value)
unsigned code, unsigned long value)
{ {
struct dev_data *dev = fd->private_data; struct dev_data *dev = fd->private_data;
struct usb_gadget *gadget = dev->gadget; struct usb_gadget *gadget = dev->gadget;
long ret = -ENOTTY;
if (gadget->ops->ioctl) if (gadget->ops->ioctl) {
return gadget->ops->ioctl (gadget, code, value); lock_kernel();
return -ENOTTY; ret = gadget->ops->ioctl (gadget, code, value);
unlock_kernel();
}
return ret;
} }
/* used after device configuration */ /* used after device configuration */
...@@ -1314,7 +1317,7 @@ static const struct file_operations ep0_io_operations = { ...@@ -1314,7 +1317,7 @@ static const struct file_operations ep0_io_operations = {
.write = ep0_write, .write = ep0_write,
.fasync = ep0_fasync, .fasync = ep0_fasync,
.poll = ep0_poll, .poll = ep0_poll,
.ioctl = dev_ioctl, .unlocked_ioctl = dev_ioctl,
.release = dev_release, .release = dev_release,
}; };
...@@ -1964,7 +1967,7 @@ static const struct file_operations dev_init_operations = { ...@@ -1964,7 +1967,7 @@ static const struct file_operations dev_init_operations = {
.open = dev_open, .open = dev_open,
.write = dev_config, .write = dev_config,
.fasync = ep0_fasync, .fasync = ep0_fasync,
.ioctl = dev_ioctl, .unlocked_ioctl = dev_ioctl,
.release = dev_release, .release = dev_release,
}; };
......
...@@ -828,9 +828,8 @@ printer_poll(struct file *fd, poll_table *wait) ...@@ -828,9 +828,8 @@ printer_poll(struct file *fd, poll_table *wait)
return status; return status;
} }
static int static long
printer_ioctl(struct inode *inode, struct file *fd, unsigned int code, printer_ioctl(struct file *fd, unsigned int code, unsigned long arg)
unsigned long arg)
{ {
struct printer_dev *dev = fd->private_data; struct printer_dev *dev = fd->private_data;
unsigned long flags; unsigned long flags;
...@@ -869,7 +868,7 @@ static struct file_operations printer_io_operations = { ...@@ -869,7 +868,7 @@ static struct file_operations printer_io_operations = {
.write = printer_write, .write = printer_write,
.fsync = printer_fsync, .fsync = printer_fsync,
.poll = printer_poll, .poll = printer_poll,
.ioctl = printer_ioctl, .unlocked_ioctl = printer_ioctl,
.release = printer_close .release = printer_close
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment