ip2: Push BKL down for the firmware interface
PATCH 1/1 ip2: Push BKL down for the firmware interface
(The tty side is already done)
Signed-off-by Alan Cox <[email protected]>
drivers/char/ip2/ip2main.c +8 -5
@@ -202,7 +202,7 @@ static int set_serial_info(i2ChanStrPtr, struct serial_struct __user *);static ssize_t ip2_ipl_read (struct file *,char __user *,size_t ,loff_t *);static ssize_t ip2_ipl_write (struct file *,const char __user *,size_t ,loff_t *); -static int ip2_ipl_ioctl (struct inode *,struct file *,UINT ,ULONG ); +static long ip2_ipl_ioctl (struct file *,UINT ,ULONG );static int ip2_ipl_open (struct inode *,struct file *);static int DumpTraceBuffer (char __user *,int );
@@ -235,7 +235,7 @@ static const struct file_operations ip2_ipl = { .owner = THIS_MODULE, .read = ip2_ipl_read, .write = ip2_ipl_write, - .ioctl = ip2_ipl_ioctl, + .unlocked_ioctl = ip2_ipl_ioctl, .open = ip2_ipl_open, };
@@ -2818,10 +2818,10 @@ ip2_ipl_write(struct file *pFile, const char __user *pData, size_t count, loff_t/* */ /* */ /******************************************************************************/ -static int -ip2_ipl_ioctl (struct inode *pInode,struct file *pFile,UINT cmd,ULONG arg ) +static long +ip2_ipl_ioctl (struct file *pFile,UINT cmd,ULONG arg ) { -unsigned int iplminor =iminor (pInode); +unsigned int iplminor =iminor (pFile->f_path.dentry->d_inode);int rc =0 ;void __user *argp = (void __user *)arg;ULONG __user *pIndex = argp;
@@ -2832,6 +2832,8 @@ ip2_ipl_ioctl ( struct inode *pInode, struct file *pFile, UINT cmd, ULONG arg )printk (KERN_DEBUG "IP2IPL: ioctl cmd %d, arg %ld\n" , cmd, arg );#endif +lock_kernel (); +switch ( iplminor ) {case 0 :// IPL device rc = -EINVAL ;
@@ -2892,6 +2894,7 @@ ip2_ipl_ioctl ( struct inode *pInode, struct file *pFile, UINT cmd, ULONG arg ) rc = -ENODEV ;break ; } +unlock_kernel ();return rc; }