From fc1e116f2758ec88becb8808604338ba4e626553 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Mon, 9 Jan 2006 20:52:07 -0800 Subject: [PATCH] --- yaml --- r: 17567 b: refs/heads/master c: f042e0f80b0a9f5bb57c36d60a2798de6ca943b2 h: refs/heads/master i: 17565: e04a7f4454f393d00521b2ac6059fea201e7a74f 17563: 7a14e07fadc7544b05d07923fb39428650dee77b 17559: b0e7ffe3683d049581633ea893624aff2c662920 17551: db535def1a31d4583fe91bd20ae2339f6d6e3807 17535: 36583f9ca5e31a3f74fb345e56f3ef2d326930e2 v: v3 --- [refs] | 2 +- trunk/arch/s390/kernel/compat_ioctl.c | 2 -- trunk/drivers/s390/char/tape_char.c | 20 ++++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 01a7e1d9a0ad..774ddfee2618 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 51a990588a3e38f7963964813786fa4f0da43ecc +refs/heads/master: f042e0f80b0a9f5bb57c36d60a2798de6ca943b2 diff --git a/trunk/arch/s390/kernel/compat_ioctl.c b/trunk/arch/s390/kernel/compat_ioctl.c index da473bda962f..432aeb38b50d 100644 --- a/trunk/arch/s390/kernel/compat_ioctl.c +++ b/trunk/arch/s390/kernel/compat_ioctl.c @@ -63,8 +63,6 @@ COMPATIBLE_IOCTL(BIODASDSATTR) COMPATIBLE_IOCTL(BIODASDCMFENABLE) COMPATIBLE_IOCTL(BIODASDCMFDISABLE) COMPATIBLE_IOCTL(BIODASDREADALLCMB) - -COMPATIBLE_IOCTL(TAPE390_DISPLAY) }; int ioctl_table_size = ARRAY_SIZE(ioctl_start); diff --git a/trunk/drivers/s390/char/tape_char.c b/trunk/drivers/s390/char/tape_char.c index 86262a13f7c6..5ce7ca38ace0 100644 --- a/trunk/drivers/s390/char/tape_char.c +++ b/trunk/drivers/s390/char/tape_char.c @@ -37,6 +37,8 @@ static int tapechar_open(struct inode *,struct file *); static int tapechar_release(struct inode *,struct file *); static int tapechar_ioctl(struct inode *, struct file *, unsigned int, unsigned long); +static long tapechar_compat_ioctl(struct file *, unsigned int, + unsigned long); static struct file_operations tape_fops = { @@ -44,6 +46,7 @@ static struct file_operations tape_fops = .read = tapechar_read, .write = tapechar_write, .ioctl = tapechar_ioctl, + .compat_ioctl = tapechar_compat_ioctl, .open = tapechar_open, .release = tapechar_release, }; @@ -463,6 +466,23 @@ tapechar_ioctl(struct inode *inp, struct file *filp, return device->discipline->ioctl_fn(device, no, data); } +static long +tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data) +{ + struct tape_device *device = filp->private_data; + int rval = -ENOIOCTLCMD; + + if (device->discipline->ioctl_fn) { + lock_kernel(); + rval = device->discipline->ioctl_fn(device, no, data); + unlock_kernel(); + if (rval == -EINVAL) + rval = -ENOIOCTLCMD; + } + + return rval; +} + /* * Initialize character device frontend. */