On Tue, Dec 17, 2019 at 09:17:16AM +0100, Uwe Kleine-König wrote: > This function gives a struct tty_struct for a given device number. That says _what_ this does, but not why :) > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > --- > drivers/tty/tty_io.c | 27 +++++++++++++++++++++++++++ > include/linux/tty.h | 1 + > 2 files changed, 28 insertions(+) > > diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c > index d9f54c7d94f2..584025117cd3 100644 > --- a/drivers/tty/tty_io.c > +++ b/drivers/tty/tty_io.c > @@ -1925,6 +1925,33 @@ struct tty_struct *tty_kopen(dev_t device) > } > EXPORT_SYMBOL_GPL(tty_kopen); > > +/* > + * Caller gets a reference on (non-error) ttys, that must be disposed using > + * tty_kref_put(). > + */ It's a global function, can you please use kerneldoc? And please describe it as well as tty_kopen() is. > +struct tty_struct *tty_kopen_shared(dev_t device) > +{ > + struct tty_struct *tty; > + struct tty_driver *driver; > + int index = -1; > + > + mutex_lock(&tty_mutex); > + driver = tty_lookup_driver(device, NULL, &index); > + if (IS_ERR(driver)) { > + tty = ERR_CAST(driver); > + goto err_lookup_driver; > + } > + > + tty = tty_driver_lookup_tty(driver, NULL, index); No error check? > + > + tty_driver_kref_put(driver); > +err_lookup_driver: > + > + mutex_unlock(&tty_mutex); > + return tty; Can't you share a lot of this code with tty_kopen()? It feels odd to duplicatate _almost_ all of it here. > +} > +EXPORT_SYMBOL(tty_kopen_shared); EXPORT_SYMBOL_GPL() please. thanks, greg k-h