TTY: tty_driver, document tty->ops->shutdown limitation
authorJiri Slaby <jslaby@suse.cz>
Mon, 5 Mar 2012 13:51:56 +0000 (14:51 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Mar 2012 19:38:51 +0000 (11:38 -0800)
Note that tty->ops->shutdown is called from whatever context the user
drops the last tty reference from. E.g. if one takes a reference in
an ISR, tty close happens on other CPU and the final tty put is from
the ISR, tty->ops->shutdown will be called from that hard irq context.

We would have a problem in vt if we start using tty refcounting from
other contexts than user there. It is because vt's shutdown uses
mutexes. This is yet to be fixed.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/tty_driver.h

index e064f17..6e6dbb7 100644 (file)
@@ -50,6 +50,8 @@
  *     Note that tty_shutdown() is not called if ops->shutdown is defined.
  *     This means one is responsible to take care of calling ops->remove (e.g.
  *     via tty_driver_remove_tty) and releasing tty->termios.
+ *     Note that this hook may be called from *all* the contexts where one
+ *     uses tty refcounting (e.g. tty_port_tty_get).
  *
  *
  * void (*cleanup)(struct tty_struct * tty);