Re: [PATCH 0/4] tty: Hold write ldisc sem in tty_reopen()

From: Pasi Kärkkäinen
Date: Thu Aug 30 2018 - 03:10:31 EST


Hi Dmitry,

On Wed, Aug 29, 2018 at 03:23:49AM +0100, Dmitry Safonov wrote:
> Two fixes for potential and real issues.
> Looks worth to have in stables as we've hit it on v4.9 stable.
> And for linux-next - adding lockdep asserts for line discipline changing
> code, verifying that write ldisc sem will be held forthwith.
>
> I couldn't verify that holding write lock fixes the issue as we've hit
> it only once and I've failed in reproducing it.
> But searching in lkml, Cc'ing here people who probably had the same
> crash (and in hope someone of them could give tested-by):
>

And thanks a lot for your work on fixing these issues!

I've added Nathan (and centos-virt) to CC, because earlier Nathan was able to reliably trigger ldisc related kernel crash in Xen dom0 when running Linux 4.9 kernel, which seems similar to what your patch 2/4 is trying to fix.

Nathan's kernel crash report: https://lists.centos.org/pipermail/centos-virt/2017-August/005610.html
Example ldisc kernel crash BUG in "n_tty_receive_buf_common": https://lists.centos.org/pipermail/centos-virt/attachments/20170823/45493276/attachment.txt

CentOS bug: https://bugs.centos.org/view.php?id=13713


Thanks,

-- Pasi

> Cc: Daniel Axtens <dja@xxxxxxxxxx>
> Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> Cc: Michael Neuling <mikey@xxxxxxxxxxx>
> Cc: Mikulas Patocka <mpatocka@xxxxxxxxxx>
> Cc: Pasi Kärkkäinen <pasik@xxxxxx>
> Cc: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx>
> Cc: Sergey Senozhatsky <sergey.senozhatsky.work@xxxxxxxxx>
> Cc: Tan Xiaojun <tanxiaojun@xxxxxxxxxx>
> (please, ignore if I Cc'ed you mistakenly)
>
> Dmitry Safonov (4):
> tty: Drop tty->count on tty_reopen() failure
> tty: Hold tty_ldisc_lock() during tty_reopen()
> tty: Lock tty pair in tty_init_dev()
> tty/lockdep: Add ldisc_sem asserts
>
> drivers/tty/tty_io.c | 21 +++++++++++++++------
> drivers/tty/tty_ldisc.c | 12 ++++++++----
> include/linux/tty.h | 4 ++++
> 3 files changed, 27 insertions(+), 10 deletions(-)
>
> --
> 2.13.6
>