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

Commit 703c631e authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Frederic Weisbecker
Browse files

isdn: Push down BKL into ioctl functions



Push down bkl into isdn ioctl functions

[fweisbec: dropped drivers/isdn/divert/divert_procfs.c
as it has been pushed down in procfs branch already]

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
parent f4927c45
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -787,8 +787,7 @@ capi_poll(struct file *file, poll_table * wait)
}

static int
capi_ioctl(struct inode *inode, struct file *file,
	   unsigned int cmd, unsigned long arg)
capi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	struct capidev *cdev = file->private_data;
	capi_ioctl_struct data;
@@ -981,6 +980,18 @@ capi_ioctl(struct inode *inode, struct file *file,
	}
}

static long
capi_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	int ret;

	lock_kernel();
	ret = capi_ioctl(file, cmd, arg);
	unlock_kernel();

	return ret;
}

static int capi_open(struct inode *inode, struct file *file)
{
	struct capidev *cdev;
@@ -1026,7 +1037,7 @@ static const struct file_operations capi_fops =
	.read		= capi_read,
	.write		= capi_write,
	.poll		= capi_poll,
	.ioctl		= capi_ioctl,
	.unlocked_ioctl	= capi_unlocked_ioctl,
	.open		= capi_open,
	.release	= capi_release,
};
+15 −3
Original line number Diff line number Diff line
@@ -1272,9 +1272,9 @@ isdn_poll(struct file *file, poll_table * wait)


static int
isdn_ioctl(struct inode *inode, struct file *file, uint cmd, ulong arg)
isdn_ioctl(struct file *file, uint cmd, ulong arg)
{
	uint minor = iminor(inode);
	uint minor = iminor(file->f_path.dentry->d_inode);
	isdn_ctrl c;
	int drvidx;
	int chidx;
@@ -1722,6 +1722,18 @@ isdn_ioctl(struct inode *inode, struct file *file, uint cmd, ulong arg)
#undef cfg
}

static long
isdn_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	int ret;

	lock_kernel();
	ret = isdn_ioctl(file, cmd, arg);
	unlock_kernel();

	return ret;
}

/*
 * Open the device code.
 */
@@ -1838,7 +1850,7 @@ static const struct file_operations isdn_fops =
	.read		= isdn_read,
	.write		= isdn_write,
	.poll		= isdn_poll,
	.ioctl		= isdn_ioctl,
	.unlocked_ioctl	= isdn_unlocked_ioctl,
	.open		= isdn_open,
	.release	= isdn_close,
};
+6 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/miscdevice.h>
#include <linux/module.h>
#include <linux/mISDNif.h>
#include <linux/smp_lock.h>
#include "core.h"

static u_int	*debug;
@@ -215,9 +216,8 @@ misdn_del_timer(struct mISDNtimerdev *dev, int id)
	return ret;
}

static int
mISDN_ioctl(struct inode *inode, struct file *filep, unsigned int cmd,
    unsigned long arg)
static long
mISDN_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
{
	struct mISDNtimerdev	*dev = filep->private_data;
	int			id, tout, ret = 0;
@@ -226,6 +226,7 @@ mISDN_ioctl(struct inode *inode, struct file *filep, unsigned int cmd,
	if (*debug & DEBUG_TIMER)
		printk(KERN_DEBUG "%s(%p, %x, %lx)\n", __func__,
		    filep, cmd, arg);
	lock_kernel();
	switch (cmd) {
	case IMADDTIMER:
		if (get_user(tout, (int __user *)arg)) {
@@ -257,13 +258,14 @@ mISDN_ioctl(struct inode *inode, struct file *filep, unsigned int cmd,
	default:
		ret = -EINVAL;
	}
	unlock_kernel();
	return ret;
}

static const struct file_operations mISDN_fops = {
	.read		= mISDN_read,
	.poll		= mISDN_poll,
	.ioctl		= mISDN_ioctl,
	.unlocked_ioctl	= mISDN_ioctl,
	.open		= mISDN_open,
	.release	= mISDN_close,
};