All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>, Greg KH <gregkh@suse.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Al Viro <viro@zeniv.linux.org.uk>, Jan Blunck <jblunck@suse.de>,
	Ingo Molnar <mingo@elte.hu>, John Kacur <jkacur@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 4/6] staging: push down BKL into ioctl functions
Date: Tue, 27 Apr 2010 20:15:07 +0200	[thread overview]
Message-ID: <20100427181501.GC5586@nowhere> (raw)
In-Reply-To: <1272320645-8671-5-git-send-email-arnd@arndb.de>

Hi Greg,


On Tue, Apr 27, 2010 at 12:24:03AM +0200, Arnd Bergmann wrote:
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/staging/crystalhd/crystalhd_lnx.c |   13 +++++++++----
>  drivers/staging/dt3155/dt3155_drv.c       |   24 ++++++++++++++++++------
>  drivers/staging/poch/poch.c               |   17 +++++++++++++++--
>  drivers/staging/vme/devices/vme_user.c    |   18 +++++++++++++++---
>  4 files changed, 57 insertions(+), 15 deletions(-)


If you are fine with this patch, I think it would be better if
you get it in your tree.

Thanks.




> 
> diff --git a/drivers/staging/crystalhd/crystalhd_lnx.c b/drivers/staging/crystalhd/crystalhd_lnx.c
> index 54bad65..3291e14 100644
> --- a/drivers/staging/crystalhd/crystalhd_lnx.c
> +++ b/drivers/staging/crystalhd/crystalhd_lnx.c
> @@ -16,6 +16,7 @@
>  ***************************************************************************/
>  
>  #include <linux/version.h>
> +#include <linux/smp_lock.h>
>  #include <linux/slab.h>
>  
>  #include "crystalhd_lnx.h"
> @@ -261,12 +262,12 @@ static int chd_dec_api_cmd(struct crystalhd_adp *adp, unsigned long ua,
>  }
>  
>  /* API interfaces */
> -static int chd_dec_ioctl(struct inode *in, struct file *fd,
> -			 unsigned int cmd, unsigned long ua)
> +static long chd_dec_ioctl(struct file *fd, unsigned int cmd, unsigned long ua)
>  {
>  	struct crystalhd_adp *adp = chd_get_adp();
>  	crystalhd_cmd_proc cproc;
>  	struct crystalhd_user *uc;
> +	int ret;
>  
>  	if (!adp || !fd) {
>  		BCMLOG_ERR("Invalid adp\n");
> @@ -279,13 +280,17 @@ static int chd_dec_ioctl(struct inode *in, struct file *fd,
>  		return -ENODATA;
>  	}
>  
> +	lock_kernel();
>  	cproc = crystalhd_get_cmd_proc(&adp->cmds, cmd, uc);
>  	if (!cproc) {
>  		BCMLOG_ERR("Unhandled command: %d\n", cmd);
> +		unlock_kernel();
>  		return -EINVAL;
>  	}
>  
> -	return chd_dec_api_cmd(adp, ua, uc->uid, cmd, cproc);
> +	ret = chd_dec_api_cmd(adp, ua, uc->uid, cmd, cproc);
> +	unlock_kernel();
> +	return ret;
>  }
>  
>  static int chd_dec_open(struct inode *in, struct file *fd)
> @@ -345,7 +350,7 @@ static int chd_dec_close(struct inode *in, struct file *fd)
>  
>  static const struct file_operations chd_dec_fops = {
>  	.owner   = THIS_MODULE,
> -	.ioctl   = chd_dec_ioctl,
> +	.unlocked_ioctl = chd_dec_ioctl,
>  	.open    = chd_dec_open,
>  	.release = chd_dec_close,
>  };
> diff --git a/drivers/staging/dt3155/dt3155_drv.c b/drivers/staging/dt3155/dt3155_drv.c
> index e2c44ec..7e6095f 100644
> --- a/drivers/staging/dt3155/dt3155_drv.c
> +++ b/drivers/staging/dt3155/dt3155_drv.c
> @@ -63,6 +63,7 @@ extern void printques(int);
>  #include <linux/types.h>
>  #include <linux/poll.h>
>  #include <linux/sched.h>
> +#include <linux/smp_lock.h>
>  
>  #include <asm/io.h>
>  #include <asm/uaccess.h>
> @@ -835,6 +836,17 @@ static unsigned int dt3155_poll (struct file * filp, poll_table *wait)
>    return 0;
>  }
>  
> +static long
> +dt3155_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> +{
> +	int ret;
> +
> +	lock_kernel();
> +	ret = dt3155_ioctl(file->f_path.dentry->d_inode, file, cmd, arg);
> +	unlock_kernel();
> +
> +	return ret;
> +}
>  
>  /*****************************************************
>   * file operations supported by DT3155 driver
> @@ -842,12 +854,12 @@ static unsigned int dt3155_poll (struct file * filp, poll_table *wait)
>   *  register_chrdev
>   *****************************************************/
>  static struct file_operations dt3155_fops = {
> -  read:		dt3155_read,
> -  ioctl:		dt3155_ioctl,
> -  mmap:		dt3155_mmap,
> -  poll:           dt3155_poll,
> -  open:		dt3155_open,
> -  release:	dt3155_close
> +	.read		= dt3155_read,
> +	.unlocked_ioctl	= dt3155_unlocked_ioctl,
> +	.mmap		= dt3155_mmap,
> +	.poll		= dt3155_poll,
> +	.open		= dt3155_open,
> +	.release	= dt3155_close
>  };
>  
>  
> diff --git a/drivers/staging/poch/poch.c b/drivers/staging/poch/poch.c
> index f940a34..bf46e29 100644
> --- a/drivers/staging/poch/poch.c
> +++ b/drivers/staging/poch/poch.c
> @@ -16,6 +16,7 @@
>  #include <linux/sysfs.h>
>  #include <linux/poll.h>
>  #include <linux/idr.h>
> +#include <linux/smp_lock.h>
>  #include <linux/interrupt.h>
>  #include <linux/init.h>
>  #include <linux/ioctl.h>
> @@ -911,7 +912,7 @@ static unsigned int poch_poll(struct file *filp, poll_table *pt)
>  	return ret;
>  }
>  
> -static int poch_ioctl(struct inode *inode, struct file *filp,
> +static int poch_ioctl(struct file *filp,
>  		      unsigned int cmd, unsigned long arg)
>  {
>  	struct channel_info *channel = filp->private_data;
> @@ -1033,11 +1034,23 @@ static int poch_ioctl(struct inode *inode, struct file *filp,
>  	return 0;
>  }
>  
> +static long
> +poch_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> +{
> +	int ret;
> +
> +	lock_kernel();
> +	ret = poch_ioctl(file, cmd, arg);
> +	unlock_kernel();
> +
> +	return ret;
> +}
> +
>  static struct file_operations poch_fops = {
>  	.owner = THIS_MODULE,
>  	.open = poch_open,
>  	.release = poch_release,
> -	.ioctl = poch_ioctl,
> +	.poch_ioctl = poch_unlocked_ioctl,
>  	.poll = poch_poll,
>  	.mmap = poch_mmap
>  };
> diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c
> index 1ab9a98..bc16fc0 100644
> --- a/drivers/staging/vme/devices/vme_user.c
> +++ b/drivers/staging/vme/devices/vme_user.c
> @@ -31,6 +31,7 @@
>  #include <linux/slab.h>
>  #include <linux/spinlock.h>
>  #include <linux/syscalls.h>
> +#include <linux/smp_lock.h>
>  #include <linux/types.h>
>  
>  #include <asm/io.h>
> @@ -130,8 +131,7 @@ static int vme_user_release(struct inode *, struct file *);
>  static ssize_t vme_user_read(struct file *, char *, size_t, loff_t *);
>  static ssize_t vme_user_write(struct file *, const char *, size_t, loff_t *);
>  static loff_t vme_user_llseek(struct file *, loff_t, int);
> -static int vme_user_ioctl(struct inode *, struct file *, unsigned int,
> -	unsigned long);
> +static long vme_user_unlocked_ioctl(struct file *, unsigned int, unsigned long);
>  
>  static int __init vme_user_probe(struct device *, int, int);
>  static int __exit vme_user_remove(struct device *, int, int);
> @@ -142,7 +142,7 @@ static struct file_operations vme_user_fops = {
>          .read = vme_user_read,
>          .write = vme_user_write,
>          .llseek = vme_user_llseek,
> -        .ioctl = vme_user_ioctl,
> +        .unlocked_ioctl = vme_user_unlocked_ioctl,
>  };
>  
>  
> @@ -555,6 +555,18 @@ static int vme_user_ioctl(struct inode *inode, struct file *file,
>  	return -EINVAL;
>  }
>  
> +static long
> +vme_user_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> +{
> +	int ret;
> +
> +	lock_kernel();
> +	ret = vme_user_ioctl(file->f_path.dentry->d_inode, file, cmd, arg);
> +	unlock_kernel();
> +
> +	return ret;
> +}
> +
>  
>  /*
>   * Unallocate a previously allocated buffer
> -- 
> 1.7.0.4
> 


  reply	other threads:[~2010-04-27 18:15 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-16  3:56 [GIT PULL] Preparation for BKL'ed ioctl removal Frederic Weisbecker
2010-04-22  0:48 ` [GIT PULL v2] " Frederic Weisbecker
2010-04-24 15:25   ` Frederic Weisbecker
2010-04-24 18:36     ` Linus Torvalds
2010-04-24 18:47       ` Linus Torvalds
2010-04-24 19:54         ` Arnd Bergmann
2010-04-24 20:01           ` Linus Torvalds
2010-04-24 20:40             ` Arnd Bergmann
2010-04-24 22:15               ` Linus Torvalds
2010-04-25 17:39                 ` Frederic Weisbecker
2010-04-25 17:49                   ` Linus Torvalds
2010-04-25 18:05                     ` Frederic Weisbecker
2010-04-26  8:30                     ` Arnd Bergmann
2010-04-26 18:08                       ` Linus Torvalds
2010-04-26 19:12                         ` Arnd Bergmann
2010-04-26 20:36                           ` Linus Torvalds
2010-04-26 22:23                           ` [PATCH 0/6] Push down BKL into device drivers Arnd Bergmann
2010-04-27  9:14                             ` John Kacur
2010-04-26 22:24                           ` [PATCH 1/6] dvb: push down BKL into ioctl functions Arnd Bergmann
2010-04-26 22:24                           ` [PATCH 2/6] scsi: " Arnd Bergmann
2010-04-26 22:24                           ` [PATCH 3/6] isdn: " Arnd Bergmann
2010-04-26 22:24                           ` [PATCH 4/6] staging: " Arnd Bergmann
2010-04-27 18:15                             ` Frederic Weisbecker [this message]
2010-04-27 18:33                               ` Greg KH
2010-04-26 22:24                           ` [PATCH 5/6] v4l: always use unlocked_ioctl Arnd Bergmann
2010-04-26 22:24                           ` [PATCH 6/6] drivers: push down BKL into various drivers Arnd Bergmann
2010-04-26 20:42                         ` [GIT PULL v2] Preparation for BKL'ed ioctl removal David Miller
2010-04-26 22:09                           ` Frederic Weisbecker
2010-04-26 22:32                             ` Linus Torvalds
2010-04-26 23:04                               ` Frederic Weisbecker
2010-04-26  7:25                   ` Ingo Molnar
2010-04-26 11:29                     ` Arnd Bergmann
2010-04-27  9:25                       ` Ingo Molnar
2010-04-28 13:21                         ` Frederic Weisbecker
2010-04-28 13:37                           ` Ingo Molnar
2010-04-28 14:05                         ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100427181501.GC5586@nowhere \
    --to=fweisbec@gmail.com \
    --cc=arnd@arndb.de \
    --cc=gregkh@suse.de \
    --cc=jblunck@suse.de \
    --cc=jkacur@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.