From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Likely Subject: Re: [PATCH] spi: spidev: Add 32 bit compat ioctl() Date: Thu, 3 Feb 2011 09:56:07 -0700 Message-ID: <20110203165607.GB6180@angua.secretlab.ca> References: <1296722238-4308-1-git-send-email-walle@corscience.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dbrownell@users.sourceforge.net, spi-devel-general@lists.sourceforge.net, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, arnd@arndb.de To: Bernhard Walle Return-path: Content-Disposition: inline In-Reply-To: <1296722238-4308-1-git-send-email-walle@corscience.de> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-spi.vger.kernel.org On Thu, Feb 03, 2011 at 09:37:18AM +0100, Bernhard Walle wrote: > Add the compat_ioctl for operations on /dev/spi* so that 32 bit > userspace applications can access SPI. As far as I can see all data > structure are already prepared for that, so no additional conversion has > to be done. > > My use case is MIPS with N32 userspace ABI and toolchain, and that was > also the platform where I tested it successfully (Cavium Octeon). > > Signed-off-by: Bernhard Walle Applied, thanks. g. > --- > drivers/spi/spidev.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c > index 4e6245e..833e238 100644 > --- a/drivers/spi/spidev.c > +++ b/drivers/spi/spidev.c > @@ -30,6 +30,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -471,6 +472,16 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > return retval; > } > > +#ifdef CONFIG_COMPAT > +static long > +spidev_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > +{ > + return spidev_ioctl(filp, cmd, (unsigned long)compat_ptr(arg)); > +} > +#else > +#define spidev_compat_ioctl NULL > +#endif /* CONFIG_COMPAT */ > + > static int spidev_open(struct inode *inode, struct file *filp) > { > struct spidev_data *spidev; > @@ -543,6 +554,7 @@ static const struct file_operations spidev_fops = { > .write = spidev_write, > .read = spidev_read, > .unlocked_ioctl = spidev_ioctl, > + .compat_ioctl = spidev_compat_ioctl, > .open = spidev_open, > .release = spidev_release, > .llseek = no_llseek, > -- > 1.7.1 >