From: Andi Kleen <ak@muc.de>

Convert amdtp driver to compat_ioctl

Signed-off-by: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/ieee1394/amdtp.c |   42 +++++++++++----------------------------
 1 files changed, 12 insertions(+), 30 deletions(-)

diff -puN drivers/ieee1394/amdtp.c~convert-amdtp-driver-to-compat_ioctl drivers/ieee1394/amdtp.c
--- 25/drivers/ieee1394/amdtp.c~convert-amdtp-driver-to-compat_ioctl	Tue Jan 18 15:45:34 2005
+++ 25-akpm/drivers/ieee1394/amdtp.c	Tue Jan 18 15:45:34 2005
@@ -1140,24 +1140,28 @@ static ssize_t amdtp_write(struct file *
 	return count;
 }
 
-static int amdtp_ioctl(struct inode *inode, struct file *file,
-			   unsigned int cmd, unsigned long arg)
+static long amdtp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
 	struct stream *s = file->private_data;
 	struct amdtp_ioctl cfg;
-
+	int err;
+	lock_kernel();
 	switch(cmd)
 	{
 	case AMDTP_IOC_PLUG:
 	case AMDTP_IOC_CHANNEL:
 		if (copy_from_user(&cfg, (struct amdtp_ioctl __user *) arg, sizeof cfg))
-			return -EFAULT;
+			err = -EFAULT;
 		else
-			return stream_configure(s, cmd, &cfg);
+			err = stream_configure(s, cmd, &cfg);
+		break;
 
 	default:
-		return -EINVAL;
+		err = -EINVAL;
+		break;
 	}
+	unlock_kernel();
+	return err;
 }
 
 static unsigned int amdtp_poll(struct file *file, poll_table *pt)
@@ -1203,7 +1207,8 @@ static struct file_operations amdtp_fops
 	.owner =	THIS_MODULE,
 	.write =	amdtp_write,
 	.poll =		amdtp_poll,
-	.ioctl =	amdtp_ioctl,
+	.unlocked_ioctl = amdtp_ioctl,
+	.compat_ioctl = amdtp_ioctl, /* All amdtp ioctls are compatible */
 	.open =		amdtp_open,
 	.release =	amdtp_release
 };
@@ -1276,18 +1281,6 @@ static int __init amdtp_init_module (voi
 
 	hpsb_register_highlevel(&amdtp_highlevel);
 
-#ifdef CONFIG_COMPAT
-	{
-		int ret;
-		ret = register_ioctl32_conversion(AMDTP_IOC_CHANNEL, NULL);
-		ret |= register_ioctl32_conversion(AMDTP_IOC_PLUG, NULL);
-		ret |= register_ioctl32_conversion(AMDTP_IOC_PING, NULL);
-		ret |= register_ioctl32_conversion(AMDTP_IOC_ZAP, NULL);
-		if (ret)
-			HPSB_ERR("amdtp: Error registering ioctl32 translations");
-	}
-#endif
-
 	HPSB_INFO("Loaded AMDTP driver");
 
 	return 0;
@@ -1295,17 +1288,6 @@ static int __init amdtp_init_module (voi
 
 static void __exit amdtp_exit_module (void)
 {
-#ifdef CONFIG_COMPAT
-	int ret;
-
-	ret = unregister_ioctl32_conversion(AMDTP_IOC_CHANNEL);
-	ret |= unregister_ioctl32_conversion(AMDTP_IOC_PLUG);
-	ret |= unregister_ioctl32_conversion(AMDTP_IOC_PING);
-	ret |= unregister_ioctl32_conversion(AMDTP_IOC_ZAP);
-	if (ret)
-		HPSB_ERR("amdtp: Error unregistering ioctl32 translations");
-#endif
-
         hpsb_unregister_highlevel(&amdtp_highlevel);
 	devfs_remove("amdtp");
 	cdev_del(&amdtp_cdev);
_