Re: [PATCH] spi: spidev: Add 32 bit compat ioctl()

From: Grant Likely
Date: Wed Feb 02 2011 - 09:12:52 EST


On Wed, Feb 2, 2011 at 2:37 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Wednesday 02 February 2011, Grant Likely wrote:
>> On Tue, Feb 01, 2011 at 10:02:46AM +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 <walle@xxxxxxxxxxxxx>
>>
>> Arnd, can you please give your opinion on this one?  I haven't fully
>> got my head around the subtleties of 32/64 bit file_operations.
>
> The patch is correct on everything except s390, which does not have SPI.
> The only thing that is missing for s390 is a pointer conversion of the ioctl
> argument, like:
>
> static long
> compat_spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
> {
>        return spidev_ioctl(filp, cmd, (unsigned long)compat_ptr(arg));
> }
>
> Some years ago, I proposed adding a common
>
> #ifdef CONFIG_COMPAT
> long generic_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
> {
>        if (!file->unlocked_ioctl)
>                return -ENOTTY;
>        return filp->f_ops->unlocked_ioctl(filp, cmd, (unsigned long)compat_ptr(arg));
> }
> #else
> #define generic_compat_ioctl NULL
> #endif
>
> for this purpose, but it never made it in. Maybe I should try again.

I'd like to see that go in too. If you can implement it for the
2.6.39, then I'd like to see this patch rebased on top of it.

g.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/