From: Al Viro <viro@ZenIV.linux.org.uk>
To: Arnd Bergmann <arnd@arndb.de>
Cc: gregkh <gregkh@linuxfoundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHES] tty ioctls cleanups, compat and not only
Date: Thu, 13 Sep 2018 21:31:45 +0100 [thread overview]
Message-ID: <20180913203145.GU19965@ZenIV.linux.org.uk> (raw)
In-Reply-To: <CAK8P3a2LpC6sw5KQ_6kcXKNfgUXkjsxbFkD30kdMgQjurGgy9Q@mail.gmail.com>
On Thu, Sep 13, 2018 at 01:19:42PM +0200, Arnd Bergmann wrote:
> On Thu, Sep 13, 2018 at 4:31 AM Al Viro <viro@zeniv.linux.org.uk> wrote:
> >
> > See vfs.git#work.tty-ioctl. Completely untested, should seriously
> > clean the things up wrt compat. Remaining problems (aside of the bugs
> > introduced in it, of course):
> > * TIOCSERGSTRUCT must die; it's present only in amiserial and it's
> > _vile_; look at what it copies out and weep.
> > * synclink_gt has proper compat handling for its private ioctls;
> > other synclink drivers (with the same ioctls) do not.
> > * dgnc definitely has buggered ioctls - structs full of longs are
> > bloody bad idea for passing around. It's in staging, and I'd say that it
> > needs the userland ABI fixed.
> > * cyclades, rocket, moxa and mxser probably have non-trivial
> > problems with their private ioctls; I hadn't looked into those.
> > * n_gsm needs ->compat_ioctl(); easy to do, I just hadn't done it
> > yet.
> > * ipwireless might or might not need compat_ioctl (PPP stuff in it);
> > not sure.
> > * ldisc private ioctls need more work. Hadn't gone there yet.
> > Generic ioctls should be fine - they never reach ->compat_ioctl() with this
> > series.
>
> I looked at all the new patches, looks all good to me. When I did my
> (incomplete) analysis, I found a couple more things that could be
> included in the series if we want to:
>
> * TIOCSERGWILD/TIOCSERSWILD are obsolete and never do
> anything useful, but the return code is inconsistent: ENOTTY
> in compat mode vs 0 in uart_ioctl, plus a printk for amiserial.
> If we want to keep it around rather than deleting it completely,
> it should be marked as compatible.
Yes. Not sure if we want to - the only user is setserial(8), with
-W Do wild interrupt initialization and exit. This option is no
longer relevant in Linux kernels after version 2.1.
What's more, rc.serial does *not* use it since 2.15 and even in 2.14 it wouldn't
have failed the boot - just whine (truthfully) "Cannot scan for wild interrupts"
on stderr and continue with the rest of the script. The same goes at least as
far back as setserial-2.02. That's what MCC had; if you want to check something
earlier, you'll probably have to ask tytso, but I very much doubt that anything
of that vintage will work with the current kernels *or* that anyone cared to
abort the script in question on setserial -W /dev/cua0 failing to start with.
So I'd seriously suggest removing those altogether. I mean, sure, we can carry
explicit "obsolete, quietly return 0 on those" indefinitely, but that really feels
over the top. Time to bury the body, unless somebody objects...
> * PPPIOCGCHAN/PPPIOCGUNIT are implemented by multiple
> ldisc variants, marking them as compatible would save us from
> implementing a comp_ioctl method for each one separately.
> These are also used on some things that are not ttys though,
> so we can't remove them from fs/compat_ioctl.c yet.
Worse - there's ipwireless, which implements it in tty_operations ->ioctl().
> * FIONREAD/TIOCINQ and TIOCOUTQ also appear multiple
> times and could be added to that list but not removed from
> fs/compat_ioctl.c (I think the other users are all in sockets, so
> adding them in both might be sufficient)
Pipes as well.
> * SIOCGIFNAME, SIOCGIFENCAP, SIOCSIFENCAP,
> SIOCSIFHWADDR, SIOCSKEEPALIVE, SIOCGKEEPALIVE,
> SIOCSOUTFILL, and SIOCGOUTFILL are in the tty_ioctl
> functions for multiple protocol handlers, comparable to
> the PPP ones.
Very definitely shared with sockets, and I prefer to handle the tty-side cases
in ldisc ->compat_ioctl().
next prev parent reply other threads:[~2018-09-13 20:31 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-13 2:31 [PATCHES] tty ioctls cleanups, compat and not only Al Viro
2018-09-13 2:40 ` [PATCH 01/50] presence of RS485 ioctls has been unconditional since 2014 Al Viro
2018-09-13 2:40 ` [PATCH 02/50] move compat handling of tty ioctls to tty_compat_ioctl() Al Viro
2018-09-14 15:15 ` Arnd Bergmann
2018-09-14 18:16 ` gregkh
2018-09-14 19:38 ` Arnd Bergmann
2018-09-15 18:51 ` gregkh
2018-09-13 2:40 ` [PATCH 03/50] tty_ioctl(): drop FIONBIO handling Al Viro
2018-09-13 2:40 ` [PATCH 04/50] mos7720: bury dead TIOCM... in ->ioctl() Al Viro
2018-09-14 13:31 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 05/50] tty_ioctl(): start taking TIOC[SG]SERIAL into separate methods Al Viro
2018-09-14 13:22 ` Johan Hovold
2018-09-14 15:18 ` Al Viro
2018-09-14 16:23 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 06/50] simserial: switch to ->[sg]et_serial() Al Viro
2018-09-13 2:40 ` [PATCH 07/50] fwserial: " Al Viro
2018-09-13 2:40 ` [PATCH 08/50] greybus/uart: " Al Viro
2018-09-14 13:31 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 09/50] amiserial: " Al Viro
2018-09-13 10:33 ` Greg Kroah-Hartman
2018-10-11 17:58 ` Geert Uytterhoeven
2018-10-13 5:36 ` Al Viro
2018-09-13 2:40 ` [PATCH 10/50] cyclades: " Al Viro
2018-09-13 2:40 ` [PATCH 11/50] ipwireless: " Al Viro
2018-09-14 12:00 ` David Sterba
2018-09-13 2:40 ` [PATCH 12/50] isicom: " Al Viro
2018-09-13 2:40 ` [PATCH 13/50] moxa: " Al Viro
2018-09-13 2:40 ` [PATCH 14/50] mxser: " Al Viro
2018-09-13 2:40 ` [PATCH 15/50] serial_core: " Al Viro
2018-09-13 2:40 ` [PATCH 16/50] rfcomm: get rid of mentioning TIOC[SG]SERIAL Al Viro
2018-09-13 2:40 ` [PATCH 17/50] usb-serial: begin switching to ->[sg]et_serial() Al Viro
2018-09-14 13:39 ` Johan Hovold
2018-09-14 15:23 ` Al Viro
2018-09-14 15:26 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 18/50] cdc-acm: switch " Al Viro
2018-09-13 2:40 ` [PATCH 19/50] ark3116: switch to ->get_serial() Al Viro
2018-09-14 13:41 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 20/50] f81232: " Al Viro
2018-09-14 13:42 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 21/50] f81534: " Al Viro
2018-09-14 13:43 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 22/50] fdti_sio: switch to ->[sg]et_serial() Al Viro
2018-09-14 13:47 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 23/50] io_edgeport: switch to ->get_serial() Al Viro
2018-09-14 13:58 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 24/50] io_ti: " Al Viro
2018-09-14 13:59 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 25/50] mos7720: " Al Viro
2018-09-14 14:02 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 26/50] mos7840: " Al Viro
2018-09-14 14:07 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 27/50] opticon: " Al Viro
2018-09-14 14:08 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 28/50] pl2303: " Al Viro
2018-09-14 14:08 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 29/50] quatech2: " Al Viro
2018-09-14 14:09 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 30/50] ssu100: " Al Viro
2018-09-14 14:10 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 31/50] ti_usb_3410_5052: switch to ->[sg]et_serial() Al Viro
2018-09-14 14:12 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 32/50] whiteheat: switch to ->get_serial() Al Viro
2018-09-14 14:15 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 33/50] usb_wwan: switch to ->[sg]et_serial() Al Viro
2018-09-14 14:18 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 34/50] complete ->[sg]et_serial() switchover Al Viro
2018-09-14 14:20 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 35/50] synclink: reduce pointless checks in ->ioctl() Al Viro
2018-09-13 2:40 ` [PATCH 36/50] take compat TIOC[SG]SERIAL treatment into tty_compat_ioctl() Al Viro
2018-09-13 2:40 ` [PATCH 37/50] kill capinc_tty_ioctl() Al Viro
2018-09-13 2:40 ` [PATCH 38/50] isdn_tty: TCSBRK{,P} won't reach ->ioctl() Al Viro
2018-09-13 2:40 ` [PATCH 39/50] dgnc: TIOCM... " Al Viro
2018-09-13 2:40 ` [PATCH 40/50] kill the rest of tty COMPAT_IOCTL() entries Al Viro
2018-09-13 10:55 ` Arnd Bergmann
2018-09-13 2:40 ` [PATCH 41/50] dgnc: break-related ioctls won't reach ->ioctl() Al Viro
2018-09-13 11:59 ` Greg Kroah-Hartman
2018-09-13 2:40 ` [PATCH 42/50] remove fallback to drivers for TIOCGICOUNT Al Viro
2018-09-14 14:23 ` Johan Hovold
2018-09-13 2:40 ` [PATCH 43/50] dgnc: leave TIOC[GS]SOFTCAR to ldisc Al Viro
2018-09-13 2:40 ` [PATCH 44/50] dgnc: don't bother with (empty) stub for TCXONC Al Viro
2018-09-13 2:40 ` [PATCH 45/50] gigaset: don't try to printk userland buffer contents Al Viro
2018-09-13 2:40 ` [PATCH 46/50] vt_compat_ioctl(): clean up, use compat_ptr() properly Al Viro
2018-09-13 10:10 ` Arnd Bergmann
2018-09-13 2:40 ` [PATCH 47/50] gigaset: add ->compat_ioctl() Al Viro
2018-09-13 2:40 ` [PATCH 48/50] compat_ioctl - kill keyboard ioctl handling Al Viro
2018-09-13 2:40 ` [PATCH 49/50] pty: fix compat ioctls Al Viro
2018-09-13 2:40 ` [PATCH 50/50] synclink_gt(): fix compat_ioctl() Al Viro
2018-09-13 11:19 ` [PATCHES] tty ioctls cleanups, compat and not only Arnd Bergmann
2018-09-13 20:31 ` Al Viro [this message]
2018-09-13 20:56 ` Arnd Bergmann
2018-09-14 2:27 ` Al Viro
2018-09-14 8:21 ` Arnd Bergmann
2018-09-14 15:10 ` Al Viro
2018-09-14 15:33 ` Arnd Bergmann
2018-09-13 11:59 ` Greg Kroah-Hartman
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=20180913203145.GU19965@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/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.