Re: [PATCH] serial: flush ldisc after hangup

From: Peter Hurley
Date: Tue Mar 01 2016 - 14:01:50 EST


On 03/01/2016 10:21 AM, Josef Bacik wrote:
> On 03/01/2016 01:17 PM, Peter Hurley wrote:

>> Yeah, the race is that the ldisc should not be attempting i/o to
>> the driver at all. This problem is fixed in -next already, but in
>> the tty core rather than in each individual tty driver.
>>
>
> Great! Which patch/patches fix this? I looked at linux-next and
> there's a lot of refactoring stuff, do I need all the things or is
> there a specific one that fixes this problem? Thanks,

The series that fixes this design problem introduce in 3.10 are these
patches:

staging: digi: Replace open-coded tty_wakeup()
serial: 68328: Remove bogus ldisc reset
bluetooth: hci_ldisc: Remove dead code
NFC: nci: Remove dead code
tty: Remove chars_in_buffer() line discipline method
tty: Fix unsafe ldisc reference via ioctl(TIOCGETD)
n_tty: Fix unsafe reference to "other" ldisc
tty: Reset c_line from driver's init_termios
staging/speakup: Use tty_ldisc_ref() for paste kworker
tty: Fix comments for tty_ldisc_get()
tty: Fix comments for tty_ldisc_release()
tty: Prepare for destroying line discipline on hangup
tty: Handle NULL tty->ldisc
tty: Move tty_ldisc_kill()
tty: Use 'disc' for line discipline index name
tty: Refactor tty_ldisc_reinit() for reuse
tty: Destroy ldisc instance on hangup

'tty: Fix unsafe ldisc reference via ioctl(TIOCGETD)' and
'tty: Fix unsafe reference to "other" ldisc' have already
made their way to most stable trees, afaict.

I doubt I'll submit any more of this series for stable;
it's just too invasive. I'll probably do it per-driver, like
your patch. Just an fyi.

Regards,
Peter Hurley