Re: [PATCH] Add compat_ioctl to scsi host structure

Andi Kleen
2005-01-19T16:03:12Z

On Wed, Jan 19, 2005 at 07:55:01AM -0800, James Bottomley wrote:
> On Wed, 2005-01-19 at 00:27 +0100, Andi Kleen wrote:
> > On Tue, Jan 18, 2005 at 07:35:36AM -0800, James Bottomley wrote:
> > > Shouldn't this also be surrounded by #ifdef CONFIG_COMPAT (on the
> > > grounds that you never fill it in unless CONFIG_COMPAT is defined)?
> >
> > At least the standard file_operations has it without ifdef.
> > I guess it doesn't hurt too much even on non compat systems.
>
> Well, I wasn't really thinking of saving the four or eight bytes for the
> pointer: It looks, from all the other patches, that the policy is that
> any compat ioctl code should be surrounded by #ifdef CONFIG_COMPAT.
> Thus, an easy way to enforce this policy is to do the same to the
> structure definition, so the compiler will error if the driver writer
> doesn't do it and tries to compile on a non-CONFIG_COMPAT platform.

Here's a new patch with the ifdef.

Add compat_ioctl vector to scsi_host.

Signed-off-by: Andi Kleen <ak@muc.de>

diff -u linux-2.6.11-rc1-bk4/include/scsi/scsi_host.h-o linux-2.6.11-rc1-bk4/include/scsi/scsi_host.h
--- linux-2.6.11-rc1-bk4/include/scsi/scsi_host.h-o 2005-01-14 10:12:26.000000000 +0100
+++ linux-2.6.11-rc1-bk4/include/scsi/scsi_host.h 2005-01-19 17:01:21.000000000 +0100
@@ -71,7 +71,18 @@
* Status: OPTIONAL
*/
int (* ioctl)(struct scsi_device *dev, int cmd, void __user *arg);
-
+
+
+#ifdef CONFIG_COMPAT
+ /*
+ * Compat handler. Handle 32bit ABI.
+ * When unknown ioctl is passed return -ENOIOCTLCMD.
+ *
+ * Status: OPTIONAL
+ */
+ int (* compat_ioctl)(struct scsi_device *dev, int cmd, void __user *arg);
+#endif
+
/*
* The queuecommand function is used to queue up a scsi
* command block to the LLDD. When the driver finished
diff -u linux-2.6.11-rc1-bk4/include/scsi/scsi_ioctl.h-o linux-2.6.11-rc1-bk4/include/scsi/scsi_ioctl.h