All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: viro@zeniv.linux.org.uk
Cc: linux-fsdevel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	Karsten Keil <isdn@linux-pingi.de>,
	Paul Bolle <pebolle@tiscali.nl>,
	Randy Dunlap <rdunlap@infradead.org>,
	"David S. Miller" <davem@davemloft.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	gigaset307x-common@lists.sourceforge.net
Subject: [PATCH v2 11/17] compat_ioctl: remove isdn ioctl translation
Date: Wed, 12 Sep 2018 17:13:03 +0200	[thread overview]
Message-ID: <20180912151422.571531-2-arnd@arndb.de> (raw)
In-Reply-To: <20180912151422.571531-1-arnd@arndb.de>

Neither the old isdn4linux interface nor the newer mISDN stack
ever had working 32-bit compat mode as far as I can tell.

However, the CAPI stack and the Gigaset ISDN driver (implemented
on top of either CAPI or i4l) have some ioctl commands that are
correctly listed in fs/compat_ioctl.c.

We can trivially move all of those into the two corresponding
files that implement the native handlers by adding a compat_ioctl
redirect to that.

I did notice that treating CAPI_MANUFACTURER_CMD() as compatible
is broken, so I'm also adding a handler for that, realizing that
in all likelyhood, nobody is ever going to call it.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/isdn/capi/capi.c         | 31 +++++++++++++++++++++++++++++++
 drivers/isdn/gigaset/interface.c | 11 +++++++++++
 fs/compat_ioctl.c                | 22 ----------------------
 3 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
index ef5560b848ab..4851dc3941eb 100644
--- a/drivers/isdn/capi/capi.c
+++ b/drivers/isdn/capi/capi.c
@@ -942,6 +942,34 @@ capi_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+static long
+capi_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	int ret;
+
+	if (cmd == CAPI_MANUFACTURER_CMD) {
+		struct {
+			unsigned long cmd;
+			compat_uptr_t data;
+		} mcmd32;
+
+		if (!capable(CAP_SYS_ADMIN))
+			return -EPERM;
+		if (copy_from_user(&mcmd32, compat_ptr(arg), sizeof(mcmd32)))
+			return -EFAULT;
+
+		mutex_lock(&capi_mutex);
+		ret = capi20_manufacturer(mcmd32.cmd, compat_ptr(mcmd32.data));
+		mutex_unlock(&capi_mutex);
+
+		return ret;
+	}
+
+	return capi_unlocked_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
+}
+#endif
+
 static int capi_open(struct inode *inode, struct file *file)
 {
 	struct capidev *cdev;
@@ -988,6 +1016,9 @@ static const struct file_operations capi_fops =
 	.write		= capi_write,
 	.poll		= capi_poll,
 	.unlocked_ioctl	= capi_unlocked_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl	= capi_compat_ioctl,
+#endif
 	.open		= capi_open,
 	.release	= capi_release,
 };
diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
index 600c79b030cd..e346756b0b45 100644
--- a/drivers/isdn/gigaset/interface.c
+++ b/drivers/isdn/gigaset/interface.c
@@ -233,6 +233,14 @@ static int if_ioctl(struct tty_struct *tty,
 	return retval;
 }
 
+#ifdef CONFIG_COMPAT
+static long if_compat_ioctl(struct tty_struct *tty,
+		     unsigned int cmd, unsigned long arg)
+{
+	return if_ioctl(tty, cmd, (unsigned long)compat_ptr(arg));
+}
+#endif
+
 static int if_tiocmget(struct tty_struct *tty)
 {
 	struct cardstate *cs = tty->driver_data;
@@ -472,6 +480,9 @@ static const struct tty_operations if_ops = {
 	.open =			if_open,
 	.close =		if_close,
 	.ioctl =		if_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl =		if_compat_ioctl,
+#endif
 	.write =		if_write,
 	.write_room =		if_write_room,
 	.chars_in_buffer =	if_chars_in_buffer,
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index c28fd9f6b1e8..379e04647f83 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -60,9 +60,6 @@
 #include <net/bluetooth/hci_sock.h>
 #include <net/bluetooth/rfcomm.h>
 
-#include <linux/capi.h>
-#include <linux/gigaset_dev.h>
-
 #ifdef CONFIG_BLOCK
 #include <linux/cdrom.h>
 #include <linux/fd.h>
@@ -840,25 +837,6 @@ COMPATIBLE_IOCTL(HIDPCONNADD)
 COMPATIBLE_IOCTL(HIDPCONNDEL)
 COMPATIBLE_IOCTL(HIDPGETCONNLIST)
 COMPATIBLE_IOCTL(HIDPGETCONNINFO)
-/* CAPI */
-COMPATIBLE_IOCTL(CAPI_REGISTER)
-COMPATIBLE_IOCTL(CAPI_GET_MANUFACTURER)
-COMPATIBLE_IOCTL(CAPI_GET_VERSION)
-COMPATIBLE_IOCTL(CAPI_GET_SERIAL)
-COMPATIBLE_IOCTL(CAPI_GET_PROFILE)
-COMPATIBLE_IOCTL(CAPI_MANUFACTURER_CMD)
-COMPATIBLE_IOCTL(CAPI_GET_ERRCODE)
-COMPATIBLE_IOCTL(CAPI_INSTALLED)
-COMPATIBLE_IOCTL(CAPI_GET_FLAGS)
-COMPATIBLE_IOCTL(CAPI_SET_FLAGS)
-COMPATIBLE_IOCTL(CAPI_CLR_FLAGS)
-COMPATIBLE_IOCTL(CAPI_NCCI_OPENCOUNT)
-COMPATIBLE_IOCTL(CAPI_NCCI_GETUNIT)
-/* Siemens Gigaset */
-COMPATIBLE_IOCTL(GIGASET_REDIR)
-COMPATIBLE_IOCTL(GIGASET_CONFIG)
-COMPATIBLE_IOCTL(GIGASET_BRKCHARS)
-COMPATIBLE_IOCTL(GIGASET_VERSION)
 /* Misc. */
 COMPATIBLE_IOCTL(0x41545900)		/* ATYIO_CLKR */
 COMPATIBLE_IOCTL(0x41545901)		/* ATYIO_CLKW */
-- 
2.18.0


  reply	other threads:[~2018-09-12 15:15 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-12 15:01 [PATCH v2 01/17] compat_ioctl: add generic_compat_ioctl_ptrarg() Arnd Bergmann
2018-09-12 15:01 ` [PATCH v2 02/17] compat_ioctl: move drivers to generic_compat_ioctl_ptrarg Arnd Bergmann
2018-09-12 15:01   ` [v2,02/17] " Arnd Bergmann
2018-09-12 15:01   ` [PATCH v2 02/17] " Arnd Bergmann
2018-09-12 15:01   ` Arnd Bergmann
2018-09-12 15:33   ` Jason Gunthorpe
2018-09-12 15:33     ` [v2,02/17] " Jason Gunthorpe
2018-09-12 15:33     ` [PATCH v2 02/17] " Jason Gunthorpe
2018-09-12 16:20     ` Arnd Bergmann
2018-09-12 16:20       ` [v2,02/17] " Arnd Bergmann
2018-09-12 16:20       ` [PATCH v2 02/17] " Arnd Bergmann
2018-09-12 16:20       ` Arnd Bergmann
2018-09-12 16:20     ` Arnd Bergmann
2018-09-12 18:13   ` Greg Kroah-Hartman
2018-09-12 18:13     ` [v2,02/17] " Greg Kroah-Hartman
2018-09-12 18:13     ` [PATCH v2 02/17] " Greg Kroah-Hartman
2018-09-16 19:07   ` Jarkko Sakkinen
2018-09-16 19:07     ` [v2,02/17] " Jarkko Sakkinen
2018-09-16 19:07     ` [PATCH v2 02/17] " Jarkko Sakkinen
2018-09-16 19:07     ` Jarkko Sakkinen
2018-09-12 15:01 ` Arnd Bergmann
2018-09-12 15:01 ` [PATCH v2 03/17] compat_ioctl: use correct compat_ptr() translation in drivers Arnd Bergmann
2018-09-12 15:01   ` [v2,03/17] " Arnd Bergmann
2018-09-12 18:13   ` [PATCH v2 03/17] " Greg Kroah-Hartman
2018-09-12 18:13     ` [v2,03/17] " Greg Kroah-Hartman
2018-09-13  0:48   ` [PATCH v2 03/17] " Andrew Donnellan
2018-09-13  0:48     ` [v2,03/17] " Andrew Donnellan
2018-09-13 11:03   ` [PATCH v2 03/17] " Felipe Balbi
2018-09-13 11:03     ` Felipe Balbi
2018-09-13 11:03     ` [v2,03/17] " Felipe Balbi
2018-09-12 15:01 ` [PATCH v2 04/17] ceph: fix compat_ioctl for ceph_dir_operations Arnd Bergmann
2018-09-12 16:12   ` David Laight
2018-09-12 16:25     ` Arnd Bergmann
2018-09-13  0:48   ` Yan, Zheng
2018-09-12 15:08 ` [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Arnd Bergmann
2018-09-12 15:08   ` Arnd Bergmann
2018-09-12 15:08   ` [v2,05/17] " Arnd Bergmann
2018-09-12 15:08   ` [PATCH v2 05/17] " Arnd Bergmann
2018-09-12 15:08   ` Arnd Bergmann
2018-09-12 15:08   ` [PATCH v2 06/17] compat_ioctl: move rtc handling into rtc-dev.c Arnd Bergmann
2018-09-12 20:00     ` Alexandre Belloni
2018-09-12 15:08   ` [PATCH v2 07/17] compat_ioctl: move tape handling into drivers Arnd Bergmann
2018-09-12 15:08   ` [PATCH v2 08/17] compat_ioctl: remove keyboard ioctl translation Arnd Bergmann
2018-09-12 15:08   ` [PATCH v2 09/17] compat_ioctl: remove HIDIO translation Arnd Bergmann
2018-09-12 15:56   ` [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Jason Gunthorpe
2018-09-12 15:56     ` Jason Gunthorpe
2018-09-12 15:56     ` [v2,05/17] " Jason Gunthorpe
2018-09-12 15:56     ` [PATCH v2 05/17] " Jason Gunthorpe
2018-09-12 15:58   ` Daniel Vetter
2018-09-12 15:58     ` Daniel Vetter
2018-09-12 15:58     ` [v2,05/17] " Daniel Vetter
2018-09-12 15:58     ` [PATCH v2 05/17] " Daniel Vetter
2018-09-12 15:58     ` Daniel Vetter
2018-09-12 15:58     ` Daniel Vetter
2018-09-12 15:58     ` Daniel Vetter
2018-09-12 16:01   ` Mauro Carvalho Chehab
2018-09-12 16:01     ` Mauro Carvalho Chehab
2018-09-12 16:01     ` [v2,05/17] " Mauro Carvalho Chehab
2018-09-12 16:01     ` [PATCH v2 05/17] " Mauro Carvalho Chehab
2018-09-12 16:01     ` Mauro Carvalho Chehab
2018-09-12 16:01     ` Mauro Carvalho Chehab
2018-09-12 18:13   ` Greg Kroah-Hartman
2018-09-12 18:13     ` Greg Kroah-Hartman
2018-09-12 18:13     ` Greg Kroah-Hartman
2018-09-12 18:13     ` [v2,05/17] " Greg Kroah-Hartman
2018-09-12 18:13     ` [PATCH v2 05/17] " Greg Kroah-Hartman
2018-09-12 18:13     ` Greg Kroah-Hartman
2018-09-12 18:13     ` Greg Kroah-Hartman
2018-09-14 14:23   ` David Sterba
2018-09-14 14:23     ` David Sterba
2018-09-14 14:23     ` [v2,05/17] " David Sterba
2018-09-14 14:23     ` [PATCH v2 05/17] " David Sterba
2018-09-14 14:23     ` David Sterba
2018-09-14 20:35   ` Darren Hart
2018-09-14 20:35     ` Darren Hart
2018-09-14 20:35     ` [v2,05/17] " Darren Hart
2018-09-14 20:35     ` [PATCH v2 05/17] " Darren Hart
2018-09-14 20:35     ` Darren Hart
2018-09-14 20:57     ` Al Viro
2018-09-14 20:57       ` Al Viro
2018-09-14 20:57       ` [v2,05/17] " Al Viro
2018-09-14 20:57       ` [PATCH v2 05/17] " Al Viro
2018-09-14 20:57       ` Al Viro
2018-09-18 17:51       ` Darren Hart
2018-09-18 17:51         ` Darren Hart
2018-09-18 17:51         ` [v2,05/17] " Darren Hart
2018-09-18 17:51         ` [PATCH v2 05/17] " Darren Hart
2018-09-18 17:51         ` Darren Hart
2018-09-18 17:59         ` Jason Gunthorpe
2018-09-18 17:59           ` Jason Gunthorpe
2018-09-18 17:59           ` [v2,05/17] " Jason Gunthorpe
2018-09-18 17:59           ` [PATCH v2 05/17] " Jason Gunthorpe
2018-09-24 20:18           ` Arnd Bergmann
2018-09-24 20:18             ` Arnd Bergmann
2018-09-24 20:18             ` [v2,05/17] " Arnd Bergmann
2018-09-24 20:18             ` [PATCH v2 05/17] " Arnd Bergmann
2018-09-24 20:18             ` Arnd Bergmann
2018-09-24 20:18             ` Arnd Bergmann
2018-09-24 20:18             ` Arnd Bergmann
2018-09-24 20:35             ` Jason Gunthorpe
2018-09-24 20:35               ` Jason Gunthorpe
2018-09-24 20:35               ` [v2,05/17] " Jason Gunthorpe
2018-09-24 20:35               ` [PATCH v2 05/17] " Jason Gunthorpe
2018-09-24 20:35               ` Jason Gunthorpe
2018-09-24 21:17               ` Arnd Bergmann
2018-09-24 21:17                 ` Arnd Bergmann
2018-09-24 21:17                 ` [v2,05/17] " Arnd Bergmann
2018-09-24 21:17                 ` [PATCH v2 05/17] " Arnd Bergmann
2018-09-24 21:17                 ` Arnd Bergmann
2018-09-24 21:17                 ` Arnd Bergmann
2018-09-24 21:17                 ` Arnd Bergmann
2018-09-17  9:33   ` Jonathan Cameron
2018-09-17  9:33     ` Jonathan Cameron
2018-09-17  9:33     ` [v2,05/17] " Jonathan Cameron
2018-09-17  9:33     ` [PATCH v2 05/17] " Jonathan Cameron
2018-09-17  9:33     ` Jonathan Cameron
2018-09-17  9:33     ` Jonathan Cameron
2018-10-06  7:05   ` Bjorn Andersson
2018-10-06  7:05     ` Bjorn Andersson
2018-10-06  7:05     ` Bjorn Andersson
2018-10-06  7:05     ` [v2,05/17] " Bjorn Andersson
2018-10-06  7:05     ` [PATCH v2 05/17] " Bjorn Andersson
2018-10-06  7:05     ` Bjorn Andersson
2018-09-12 15:13 ` [PATCH v2 10/17] compat_ioctl: remove translation for sound ioctls Arnd Bergmann
2018-09-12 15:13   ` Arnd Bergmann
2018-09-12 15:13   ` Arnd Bergmann
2018-09-12 15:13   ` Arnd Bergmann [this message]
2018-09-12 15:13   ` [PATCH v2 12/17] compat_ioctl: remove IGNORE_IOCTL() Arnd Bergmann
2018-09-12 15:13   ` [PATCH v2 13/17] compat_ioctl: remove /dev/random commands Arnd Bergmann
2018-09-12 18:13     ` Greg Kroah-Hartman
2018-09-12 15:13   ` [PATCH v2 14/17] compat_ioctl: remove joystick ioctl translation Arnd Bergmann
2018-09-12 15:13   ` [PATCH v2 15/17] compat_ioctl: remove PCI " Arnd Bergmann
2018-09-12 15:13   ` [PATCH v2 16/17] compat_ioctl: remove /dev/raw " Arnd Bergmann
2018-09-12 15:13   ` [PATCH v2 17/17] compat_ioctl: remove last RAID handling code Arnd Bergmann
2018-09-13 13:37   ` [PATCH v2 10/17] compat_ioctl: remove translation for sound ioctls Takashi Iwai
2018-09-13 13:37     ` Takashi Iwai
2018-09-13 13:37     ` Takashi Iwai
2018-09-13  2:07 ` [PATCH v2 01/17] compat_ioctl: add generic_compat_ioctl_ptrarg() Al Viro
2018-09-13 10:29   ` Arnd Bergmann
2018-10-28 17:07     ` Al Viro
2018-10-29  9:50       ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180912151422.571531-2-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=gigaset307x-common@lists.sourceforge.net \
    --cc=isdn@linux-pingi.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pebolle@tiscali.nl \
    --cc=rdunlap@infradead.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.