cosa: Push the BKL down into the COSA driver
Subsystems (2)
PATCH 1/1 cosa: Push the BKL down into the COSA driver
Signed-off-by Alan Cox <[email protected]>
drivers/net/wan/cosa.c +13 -7
@@ -305,8 +305,8 @@ static ssize_t cosa_write(struct file *file,static unsigned int cosa_poll (struct file *file,poll_table *poll);static int cosa_open (struct inode *inode,struct file *file);static int cosa_release (struct inode *inode,struct file *file); -static int cosa_chardev_ioctl (struct inode *inode,struct file *file, -unsigned int cmd,unsigned long arg); +static long cosa_chardev_ioctl (struct file *file,unsigned int cmd, +unsigned long arg);#ifdef COSA_FASYNC_WORKING static int cosa_fasync (struct inode *inode,struct file *file,int on);#endif
@@ -317,7 +317,7 @@ static const struct file_operations cosa_fops = { .read = cosa_read, .write = cosa_write, .poll = cosa_poll, - .ioctl = cosa_chardev_ioctl, + .unlocked_ioctl = cosa_chardev_ioctl, .open = cosa_open, .release = cosa_release,#ifdef COSA_FASYNC_WORKING
@@ -1225,12 +1225,18 @@ static int cosa_sppp_ioctl(struct net_device *dev, struct ifreq *ifr,return rv; } -static int cosa_chardev_ioctl (struct inode *inode,struct file *file, -unsigned int cmd,unsigned long arg) +static long cosa_chardev_ioctl (struct file *file,unsigned int cmd, +unsigned long arg) {struct channel_data *channel = file->private_data; -struct cosa_data *cosa = channel->cosa; -return cosa_ioctl_common (cosa, channel, cmd, arg); +struct cosa_data *cosa; +long ret; + +lock_kernel (); + cosa = channel->cosa; + ret =cosa_ioctl_common (cosa, channel, cmd, arg); +unlock_kernel (); +return ret; }