aboutsummaryrefslogtreecommitdiff
path: root/scripts/stackusage
diff options
context:
space:
mode:
authorDmitry Safonov <[email protected]>2018-11-01 00:24:47 +0000
committerGreg Kroah-Hartman <[email protected]>2018-12-05 12:16:33 +0100
commit83d817f41070c48bc3eb7ec18e43000a548fca5c (patch)
treec8c2a72074c45fabce2963529533d8c33fc87537 /scripts/stackusage
parent231f8fd0cca078bd4396dd7e380db813ac5736e2 (diff)
tty: Hold tty_ldisc_lock() during tty_reopen()
tty_ldisc_reinit() doesn't race with neither tty_ldisc_hangup() nor set_ldisc() nor tty_ldisc_release() as they use tty lock. But it races with anyone who expects line discipline to be the same after hoding read semaphore in tty_ldisc_ref(). We've seen the following crash on v4.9.108 stable: BUG: unable to handle kernel paging request at 0000000000002260 IP: [..] n_tty_receive_buf_common+0x5f/0x86d Workqueue: events_unbound flush_to_ldisc Call Trace: [..] n_tty_receive_buf2 [..] tty_ldisc_receive_buf [..] flush_to_ldisc [..] process_one_work [..] worker_thread [..] kthread [..] ret_from_fork tty_ldisc_reinit() should be called with ldisc_sem hold for writing, which will protect any reader against line discipline changes. Cc: Jiri Slaby <[email protected]> Cc: [email protected] # b027e2298bd5 ("tty: fix data race between tty_init_dev and flush of buf") Reviewed-by: Jiri Slaby <[email protected]> Reported-by: [email protected] Tested-by: Mark Rutland <[email protected]> Tested-by: Tetsuo Handa <[email protected]> Signed-off-by: Dmitry Safonov <[email protected]> Tested-by: Tycho Andersen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'scripts/stackusage')
0 files changed, 0 insertions, 0 deletions