Skip to content
  • Alan Cox's avatar
    tty: Fix the leak in tty_ldisc_release · aef29bc2
    Alan Cox authored
    
    
    Currently we reinit the ldisc on final tty close which is what the old code
    did to ensure that if the device retained its termios settings then it had the
    right ldisc. tty_ldisc_reinit does that but also leaves us with the reset
    ldisc reference which is then leaked.
    
    At this point we know the port will be recycled so we can kill the ldisc
    off completely rather than try and add another ldisc free up when the kref
    count hits zero.
    
    At this point it is safe to keep the ldisc closed as tty_ldisc waiting
    methods are only used from the user side, and as the final close we are
    the last such reference. Interrupt/driver side methods will always use the
    non wait version and get back a NULL.
    
    Found with kmemleak and investigated/identified by Catalin Marinas.
    
    Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    aef29bc2