Thread (9 messages) 9 messages, 3 authors, 2017-06-06

Re: [PATCH v3 1/2] tty: add compat_ioctl callbacks

From: Arnd Bergmann <arnd@arndb.de>
Date: 2017-06-06 12:46:33
Also in: linux-alpha, linux-arch, linux-mips, linux-sh, lkml, sparclinux

On Tue, Jun 6, 2017 at 1:05 PM, Aleksa Sarai [off-list ref] wrote:
quoted
quoted
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 65799575c666..2a6bd9ae3f8b 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -481,6 +481,16 @@ static int pty_bsd_ioctl(struct tty_struct *tty,
         return -ENOIOCTLCMD;
  }

+static long pty_bsd_compat_ioctl(struct tty_struct *tty,
+                                unsigned int cmd, unsigned long arg)
+{
+       /*
+        * PTY ioctls don't require any special translation between
32-bit and
+        * 64-bit userspace, they are already compatible.
+        */
+       return pty_bsd_ioctl(tty, cmd, arg);
+}
+

This looks correct but unnecessary, you can simply point both
function pointers to the same function:

They have different types, since they have different return types:

int  (*ioctl)(struct tty_struct *tty,
            unsigned int cmd, unsigned long arg);
long (*compat_ioctl)(struct tty_struct *tty,
                     unsigned int cmd, unsigned long arg);

If you like, I can change (*ioctl) to return longs as well, and then change
all of the call-sites (since unlocked_ioctl also returns long).
Ah, my mistake. In most other data structures that have a compat_ioctl
callback pointer, the prototypes are the same, and I had not realized
that tty_operations is an exception.

        Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help