Message ID | 20210723074317.32690-1-jslaby@suse.cz |
---|---|
Headers | show |
Series | Get rid of old tty_driver functions | expand |
On Fri, 2021-07-23 at 09:43 +0200, Jiri Slaby wrote: > alloc_tty_driver was deprecated by tty_alloc_driver in commit > 7f0bc6a68ed9 (TTY: pass flags to alloc_tty_driver) in 2012. > > I never got into eliminating alloc_tty_driver until now. So we still > have two functions for allocating drivers which might be confusing. > So > get rid of alloc_tty_driver uses to eliminate it for good in the next > patch. > > Note we need to switch return value checking as tty_alloc_driver uses > ERR_PTR. And flags are now a parameter of tty_alloc_driver. > > Signed-off-by: Jiri Slaby <jslaby@suse.cz> > Cc: Richard Henderson <rth@twiddle.net>(odd fixer:ALPHA PORT) > Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> > Cc: Matt Turner <mattst88@gmail.com> > Cc: Geert Uytterhoeven <geert@linux-m68k.org> > Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> > Cc: Helge Deller <deller@gmx.de> > Cc: Jeff Dike <jdike@addtoit.com> > Cc: Richard Weinberger <richard@nod.at> > Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com> > Cc: Chris Zankel <chris@zankel.net> > Cc: Max Filippov <jcmvbkbc@gmail.com> > Cc: Samuel Iglesias Gonsalvez <siglesias@igalia.com> > Cc: Jens Taprogge <jens.taprogge@taprogge.org> > Cc: Karsten Keil <isdn@linux-pingi.de> > Cc: Ulf Hansson <ulf.hansson@linaro.org> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Jakub Kicinski <kuba@kernel.org> > Cc: Heiko Carstens <hca@linux.ibm.com> > Cc: Vasily Gorbik <gor@linux.ibm.com> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > Cc: Laurentiu Tudor <laurentiu.tudor@nxp.com> > Cc: Jiri Kosina <jikos@kernel.org> > Cc: David Sterba <dsterba@suse.com> > Cc: Shawn Guo <shawnguo@kernel.org> > Cc: Sascha Hauer <s.hauer@pengutronix.de> > Cc: Oliver Neukum <oneukum@suse.com> > Cc: Felipe Balbi <balbi@kernel.org> > Cc: Johan Hovold <johan@kernel.org> > Cc: Marcel Holtmann <marcel@holtmann.org> > Cc: Johan Hedberg <johan.hedberg@gmail.com> > Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com> > --- > arch/alpha/kernel/srmcons.c | 6 +++--- > arch/m68k/emu/nfcon.c | 7 +++---- > arch/parisc/kernel/pdc_cons.c | 9 ++++----- > arch/um/drivers/line.c | 11 ++++++----- > arch/xtensa/platforms/iss/console.c | 7 +++---- > drivers/ipack/devices/ipoctal.c | 9 ++++----- > drivers/isdn/capi/capi.c | 10 ++++------ > drivers/mmc/core/sdio_uart.c | 8 ++++---- > drivers/net/usb/hso.c | 8 ++++---- > drivers/s390/char/con3215.c | 7 +++---- > drivers/s390/char/sclp_tty.c | 7 +++---- > drivers/s390/char/sclp_vt220.c | 7 +++---- > drivers/staging/gdm724x/gdm_tty.c | 9 ++++----- > drivers/tty/amiserial.c | 7 +++---- > drivers/tty/ehv_bytechan.c | 8 ++++---- > drivers/tty/goldfish.c | 14 +++++++------- > drivers/tty/hvc/hvc_console.c | 8 ++++---- > drivers/tty/hvc/hvcs.c | 8 ++++---- > drivers/tty/hvc/hvsi.c | 7 +++---- > drivers/tty/ipwireless/tty.c | 8 ++++---- > drivers/tty/mxser.c | 8 ++++---- > drivers/tty/n_gsm.c | 9 ++++----- > drivers/tty/nozomi.c | 8 ++++---- > drivers/tty/serial/kgdb_nmi.c | 7 +++---- > drivers/tty/serial/serial_core.c | 8 +++++--- > drivers/tty/synclink_gt.c | 8 ++++---- > drivers/tty/vt/vt.c | 6 +++--- > drivers/usb/class/cdc-acm.c | 8 ++++---- > drivers/usb/gadget/function/u_serial.c | 8 ++++---- > drivers/usb/serial/usb-serial.c | 9 ++++----- > net/bluetooth/rfcomm/tty.c | 8 ++++---- > 31 files changed, 120 insertions(+), 132 deletions(-) For ipack changes: Acked-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Sam
On Fri, Jul 23, 2021 at 12:43 AM Jiri Slaby <jslaby@suse.cz> wrote: > > While alloc_tty_driver failure in rs_init would mean we have much bigger > problem, there is no reason to panic when tty_register_driver fails > there. It can fail for various reasons. > > So handle the failure gracefully. Actually handle them both while at it. > This will make at least the console functional as it was enabled earlier > by console_initcall in iss_console_init. Instead of shooting down the > whole system. > > We move tty_port_init() after alloc_tty_driver(), so that we don't need > to destroy the port in case the latter function fails. > > Signed-off-by: Jiri Slaby <jslaby@suse.cz> > Cc: Chris Zankel <chris@zankel.net> > Cc: Max Filippov <jcmvbkbc@gmail.com> > Cc: linux-xtensa@linux-xtensa.org > --- > arch/xtensa/platforms/iss/console.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) Acked-by: Max Filippov <jcmvbkbc@gmail.com>
On Fri, Jul 23, 2021 at 12:43 AM Jiri Slaby <jslaby@suse.cz> wrote: > > alloc_tty_driver was deprecated by tty_alloc_driver in commit > 7f0bc6a68ed9 (TTY: pass flags to alloc_tty_driver) in 2012. > > I never got into eliminating alloc_tty_driver until now. So we still > have two functions for allocating drivers which might be confusing. So > get rid of alloc_tty_driver uses to eliminate it for good in the next > patch. > > Note we need to switch return value checking as tty_alloc_driver uses > ERR_PTR. And flags are now a parameter of tty_alloc_driver. > > Signed-off-by: Jiri Slaby <jslaby@suse.cz> > arch/xtensa/platforms/iss/console.c | 7 +++---- Acked-by: Max Filippov <jcmvbkbc@gmail.com>
On 7/23/21 9:43 AM, Jiri Slaby wrote: > When a tty driver pointer is used as a return value of struct > console's device() hook, don't store a semi-state into global variable > which holds the tty driver. It could mean console::device() would return > a bogus value. This is important esp. after the next patch where we > switch from alloc_tty_driver to tty_alloc_driver. tty_alloc_driver > returns ERR_PTR in case of error and that might have unexpected results > as the code doesn't expect this. > > Signed-off-by: Jiri Slaby <jslaby@suse.cz> > Cc: Geert Uytterhoeven <geert@linux-m68k.org> > Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> > Cc: Helge Deller <deller@gmx.de> > Cc: Chris Zankel <chris@zankel.net> > Cc: Max Filippov <jcmvbkbc@gmail.com> > Cc: Laurentiu Tudor <laurentiu.tudor@nxp.com> > Cc: Felipe Balbi <balbi@kernel.org> > --- > arch/m68k/emu/nfcon.c | 27 +++++++++++--------- > arch/parisc/kernel/pdc_cons.c | 28 +++++++++++---------- > arch/xtensa/platforms/iss/console.c | 33 +++++++++++++----------- > drivers/tty/amiserial.c | 35 ++++++++++++++------------ > drivers/tty/ehv_bytechan.c | 28 ++++++++++++--------- > drivers/tty/hvc/hvsi.c | 35 ++++++++++++++------------ > drivers/usb/gadget/function/u_serial.c | 32 ++++++++++++----------- > 7 files changed, 119 insertions(+), 99 deletions(-) > ... You may add: Acked-by: Helge Deller <deller@gmx.de> # parisc to the whole series (specifically patches 3, 4 and 8) regarding the parisc changes. Thank you! Helge > > diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c > index 39ccad063533..650cb01203de 100644 > --- a/arch/parisc/kernel/pdc_cons.c > +++ b/arch/parisc/kernel/pdc_cons.c > @@ -138,6 +138,7 @@ static struct tty_driver *pdc_console_tty_driver; > > static int __init pdc_console_tty_driver_init(void) > { > + struct tty_driver *driver; > int err; > > /* Check if the console driver is still registered. > @@ -160,31 +161,32 @@ static int __init pdc_console_tty_driver_init(void) > printk(KERN_INFO "The PDC console driver is still registered, removing CON_BOOT flag\n"); > pdc_cons.flags &= ~CON_BOOT; > > - pdc_console_tty_driver = alloc_tty_driver(1); > - > - if (!pdc_console_tty_driver) > + driver = alloc_tty_driver(1); > + if (!driver) > return -ENOMEM; > > tty_port_init(&tty_port); > > - pdc_console_tty_driver->driver_name = "pdc_cons"; > - pdc_console_tty_driver->name = "ttyB"; > - pdc_console_tty_driver->major = MUX_MAJOR; > - pdc_console_tty_driver->minor_start = 0; > - pdc_console_tty_driver->type = TTY_DRIVER_TYPE_SYSTEM; > - pdc_console_tty_driver->init_termios = tty_std_termios; > - pdc_console_tty_driver->flags = TTY_DRIVER_REAL_RAW | > + driver->driver_name = "pdc_cons"; > + driver->name = "ttyB"; > + driver->major = MUX_MAJOR; > + driver->minor_start = 0; > + driver->type = TTY_DRIVER_TYPE_SYSTEM; > + driver->init_termios = tty_std_termios; > + driver->flags = TTY_DRIVER_REAL_RAW | > TTY_DRIVER_RESET_TERMIOS; > - tty_set_operations(pdc_console_tty_driver, &pdc_console_tty_ops); > - tty_port_link_device(&tty_port, pdc_console_tty_driver, 0); > + tty_set_operations(driver, &pdc_console_tty_ops); > + tty_port_link_device(&tty_port, driver, 0); > > - err = tty_register_driver(pdc_console_tty_driver); > + err = tty_register_driver(driver); > if (err) { > printk(KERN_ERR "Unable to register the PDC console TTY driver\n"); > tty_port_destroy(&tty_port); > return err; > } > > + pdc_console_tty_driver = driver; > + > return 0; > } > device_initcall(pdc_console_tty_driver_init); ...
On Fri, Jul 23, 2021 at 09:43:09AM +0200, Jiri Slaby wrote: > This series converts the rest of the drivers to use: > * tty_alloc_driver instead of alloc_tty_driver, and > * tty_driver_kref_put instead of put_tty_driver. > > They were more of less interchangeable, alloc_tty_driver() and > put_tty_driver() are older interfaces which weren't eliminated until > now. Nice, thanks for cleaning this up! greg k-h