ncpfs: Push the BKL for ioctls down into the fs
PATCH 1/1 ncpfs: Push the BKL for ioctls down into the fs
Signed-off-by Alan Cox <[email protected]>
fs/ncpfs/dir.c +1 -1
@@ -52,7 +52,7 @@ const struct file_operations ncp_dir_operations = { .read = generic_read_dir, .readdir = ncp_readdir, - .ioctl = ncp_ioctl, + .unlocked_ioctl = ncp_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = ncp_compat_ioctl,#endif
fs/ncpfs/file.c +1 -1
@@ -286,7 +286,7 @@ const struct file_operations ncp_file_operations = .llseek = remote_llseek, .read = ncp_file_read, .write = ncp_file_write, - .ioctl = ncp_ioctl, + .unlocked_ioctl = ncp_ioctl,#ifdef CONFIG_COMPAT .compat_ioctl = ncp_compat_ioctl,#endif
fs/ncpfs/ioctl.c +11 -7
@@ -262,9 +262,10 @@ ncp_get_charsets(struct ncp_server* server, struct ncp_nls_ioctl __user *arg) }#endif /* CONFIG_NCPFS_NLS */ -static int __ncp_ioctl (struct inode *inode,struct file *filp, -unsigned int cmd,unsigned long arg) +static long __ncp_ioctl (struct file *filp,unsigned int cmd, +unsigned long arg) { +struct inode *inode = filp->f_path.dentry->d_inode;struct ncp_server *server =NCP_SERVER (inode);int result;struct ncp_ioctl_request request;
@@ -852,11 +853,12 @@ static int ncp_ioctl_need_write(unsigned int cmd) } } -int ncp_ioctl (struct inode *inode,struct file *filp, +long ncp_ioctl (struct file *filp,unsigned int cmd,unsigned long arg) {int ret; +lock_kernel ();if (ncp_ioctl_need_write (cmd)) {/* * inside the ioctl(), any failures which
@@ -864,24 +866,26 @@ int ncp_ioctl(struct inode *inode, struct file *filp,* -EACCESS, so it seems consistent to keep * that here. */ -if (mnt_want_write (filp->f_path.mnt)) +if (mnt_want_write (filp->f_path.mnt)) { +unlock_kernel ();return -EACCES ; + } } - ret =__ncp_ioctl (inode, filp, cmd, arg); + ret =__ncp_ioctl (filp, cmd, arg);if (ncp_ioctl_need_write (cmd))mnt_drop_write (filp->f_path.mnt); +unlock_kernel ();return ret; }#ifdef CONFIG_COMPAT long ncp_compat_ioctl (struct file *file,unsigned int cmd,unsigned long arg) { -struct inode *inode = file->f_path.dentry->d_inode;int ret;lock_kernel (); arg = (unsigned long )compat_ptr (arg); - ret =ncp_ioctl (inode, file, cmd, arg); + ret =ncp_ioctl (file, cmd, arg);unlock_kernel ();return ret; }