Re: [PATCH] nvme: Define compat_ioctl again to unbreak 32-bit userspace.

From: Christoph Hellwig
Date: Wed Jul 20 2022 - 00:27:35 EST


On Tue, Jul 19, 2022 at 09:55:38PM -0400, Nick Bowler wrote:
> Commit 89b3d6e60550 ("nvme: simplify the compat ioctl handling") removed
> the initialization of compat_ioctl from the nvme block_device_operations
> structures.
>
> Presumably the expectation was that 32-bit ioctls would be directed
> through the regular handler but this is not the case: failing to assign
> .compat_ioctl actually means that the compat case is disabled entirely,
> and any attempt to submit nvme ioctls from 32-bit userspace fails
> outright with -ENOTTY.

I don't think wiring up the native version is the right thing to do,
this needs to be blkdev_compat_ptr_ioctl, just like we use
compat_ptr_ioctl for the character device nodes.