From: Christoph Hellwig Again easy because all ioctls are compat clean. Signed-off-by: Christoph Hellwig Cc: Martin Schwidefsky Signed-off-by: Andrew Morton --- arch/s390/kernel/compat_ioctl.c | 7 ------- drivers/s390/char/fs3270.c | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 16 deletions(-) diff -puN arch/s390/kernel/compat_ioctl.c~switch-fs3270-to-compat_ioctl arch/s390/kernel/compat_ioctl.c --- devel/arch/s390/kernel/compat_ioctl.c~switch-fs3270-to-compat_ioctl 2005-11-04 23:42:21.000000000 -0800 +++ devel-akpm/arch/s390/kernel/compat_ioctl.c 2005-11-04 23:42:21.000000000 -0800 @@ -44,13 +44,6 @@ struct ioctl_trans ioctl_start[] = { #include "../../../fs/compat_ioctl.c" /* s390 only ioctls */ -COMPATIBLE_IOCTL(TUBICMD) -COMPATIBLE_IOCTL(TUBOCMD) -COMPATIBLE_IOCTL(TUBGETI) -COMPATIBLE_IOCTL(TUBGETO) -COMPATIBLE_IOCTL(TUBSETMOD) -COMPATIBLE_IOCTL(TUBGETMOD) - COMPATIBLE_IOCTL(TAPE390_DISPLAY) /* s390 doesn't need handlers here */ diff -puN drivers/s390/char/fs3270.c~switch-fs3270-to-compat_ioctl drivers/s390/char/fs3270.c --- devel/drivers/s390/char/fs3270.c~switch-fs3270-to-compat_ioctl 2005-11-04 23:42:21.000000000 -0800 +++ devel-akpm/drivers/s390/char/fs3270.c 2005-11-04 23:42:21.000000000 -0800 @@ -319,9 +319,8 @@ fs3270_write(struct file *filp, const ch /* * process ioctl commands for the tube driver */ -static int -fs3270_ioctl(struct inode *inode, struct file *filp, - unsigned int cmd, unsigned long arg) +static long +fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct fs3270 *fp; struct raw3270_iocb iocb; @@ -331,6 +330,7 @@ fs3270_ioctl(struct inode *inode, struct if (!fp) return -ENODEV; rc = 0; + lock_kernel(); switch (cmd) { case TUBICMD: fp->read_command = arg; @@ -356,6 +356,7 @@ fs3270_ioctl(struct inode *inode, struct rc = -EFAULT; break; } + unlock_kernel(); return rc; } @@ -491,12 +492,13 @@ fs3270_close(struct inode *inode, struct } static struct file_operations fs3270_fops = { - .owner = THIS_MODULE, /* owner */ - .read = fs3270_read, /* read */ - .write = fs3270_write, /* write */ - .ioctl = fs3270_ioctl, /* ioctl */ - .open = fs3270_open, /* open */ - .release = fs3270_close, /* release */ + .owner = THIS_MODULE, /* owner */ + .read = fs3270_read, /* read */ + .write = fs3270_write, /* write */ + .unlocked_ioctl = fs3270_ioctl, /* ioctl */ + .compat_ioctl = fs3270_ioctl, /* ioctl */ + .open = fs3270_open, /* open */ + .release = fs3270_close, /* release */ }; /* _