Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, 31 Aug 2017, Greg Kroah-Hartman wrote: > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > Hello everyone, > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > > "tty: Fix ldisc crash on reopened tty". > > Crashes with "normal" operation, or crashes when running a fuzzer or > other type of program? I can crash it reliably (in a few tries), if I use an old Debian 5 userspace on PA-RISC. The crash happens when I connect to the machine with ssh and type something to the terminal before the prompt appears. Mikulas > > The patch was already merged upstream here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 > > > > but then reverted here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > Nathan confirmed if he applies the patch from > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > least for 4.9 LTS kernel. > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > https://www.spinics.net/lists/kernel/msg2440637.html > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > So now the question is.. is anyone currently working on getting this patch > > fixed and applied upstream? I think one of the problems earlier was being > > able to reliable reproduce the crash.. Nathan says he's able to reproduce > > it many times per week on his environment on x86_64. > > I don't know of anyone working on it, want to do it yourself? > > thanks, > > greg k-h >
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, 31 Aug 2017, Greg Kroah-Hartman wrote: > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > Hello everyone, > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > > "tty: Fix ldisc crash on reopened tty". > > Crashes with "normal" operation, or crashes when running a fuzzer or > other type of program? I can crash it reliably (in a few tries), if I use an old Debian 5 userspace on PA-RISC. The crash happens when I connect to the machine with ssh and type something to the terminal before the prompt appears. Mikulas > > The patch was already merged upstream here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 > > > > but then reverted here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > Nathan confirmed if he applies the patch from > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > least for 4.9 LTS kernel. > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > https://www.spinics.net/lists/kernel/msg2440637.html > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > So now the question is.. is anyone currently working on getting this patch > > fixed and applied upstream? I think one of the problems earlier was being > > able to reliable reproduce the crash.. Nathan says he's able to reproduce > > it many times per week on his environment on x86_64. > > I don't know of anyone working on it, want to do it yourself? > > thanks, > > greg k-h >
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, Aug 31, 2017 at 03:22:05PM +1000, Michael Neuling wrote: > On Thu, 2017-08-31 at 06:36 +0200, Greg Kroah-Hartman wrote: > > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > > Hello everyone, > > > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing > > > patch > > > "tty: Fix ldisc crash on reopened tty". > > > > Crashes with "normal" operation, or crashes when running a fuzzer or > > other type of program? > > For me it crashed on boot. > Nathan said he's getting the crashes at runtime, randomly, but often. > > > > > The patch was already merged upstream here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > > d=71472fa9c52b1da27663c275d416d8654b905f05 > > > > > > but then reverted here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > > d=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > > > Nathan confirmed if he applies the patch from > > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > > least for 4.9 LTS kernel. > > > > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > > https://www.spinics.net/lists/kernel/msg2440637.html > > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#26 > > > 64604 > > > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > > > > So now the question is.. is anyone currently working on getting this patch > > > fixed and applied upstream? I think one of the problems earlier was being > > > able to reliable reproduce the crash.. Nathan says he's able to reproduce > > > it > > > many times per week on his environment on x86_64. > > > > I don't know of anyone working on it, want to do it yourself? > > I'm not anymore. We found it was only triggered on a bogus CONFIG option > combination. Once we removed that, it no longer happened. > > The underlying bug was still there though. > Yep.. and the bug seems to trigger at runtime. > Mikey -- Pasi
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, Aug 31, 2017 at 03:22:05PM +1000, Michael Neuling wrote: > On Thu, 2017-08-31 at 06:36 +0200, Greg Kroah-Hartman wrote: > > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > > Hello everyone, > > > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing > > > patch > > > "tty: Fix ldisc crash on reopened tty". > > > > Crashes with "normal" operation, or crashes when running a fuzzer or > > other type of program? > > For me it crashed on boot. > Nathan said he's getting the crashes at runtime, randomly, but often. > > > > > The patch was already merged upstream here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > > d=71472fa9c52b1da27663c275d416d8654b905f05 > > > > > > but then reverted here: > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > > d=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > > > Nathan confirmed if he applies the patch from > > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > > least for 4.9 LTS kernel. > > > > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > > https://www.spinics.net/lists/kernel/msg2440637.html > > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#26 > > > 64604 > > > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > > > > So now the question is.. is anyone currently working on getting this patch > > > fixed and applied upstream? I think one of the problems earlier was being > > > able to reliable reproduce the crash.. Nathan says he's able to reproduce > > > it > > > many times per week on his environment on x86_64. > > > > I don't know of anyone working on it, want to do it yourself? > > I'm not anymore. We found it was only triggered on a bogus CONFIG option > combination. Once we removed that, it no longer happened. > > The underlying bug was still there though. > Yep.. and the bug seems to trigger at runtime. > Mikey -- Pasi
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, 2017-08-31 at 06:36 +0200, Greg Kroah-Hartman wrote: > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > Hello everyone, > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > > "tty: Fix ldisc crash on reopened tty". > > Crashes with "normal" operation, or crashes when running a fuzzer or > other type of program? For me it crashed on boot. > > > The patch was already merged upstream here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > d=71472fa9c52b1da27663c275d416d8654b905f05 > > > > but then reverted here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > d=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > Nathan confirmed if he applies the patch from > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > least for 4.9 LTS kernel. > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > https://www.spinics.net/lists/kernel/msg2440637.html > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#26 > > 64604 > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > So now the question is.. is anyone currently working on getting this patch > > fixed and applied upstream? I think one of the problems earlier was being > > able to reliable reproduce the crash.. Nathan says he's able to reproduce it > > many times per week on his environment on x86_64. > > I don't know of anyone working on it, want to do it yourself? I'm not anymore. We found it was only triggered on a bogus CONFIG option combination. Once we removed that, it no longer happened. The underlying bug was still there though. Mikey
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Thu, 2017-08-31 at 06:36 +0200, Greg Kroah-Hartman wrote: > On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > > Hello everyone, > > > > Recently Nathan March reported on centos-virt list he's getting frequent > > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > > "tty: Fix ldisc crash on reopened tty". > > Crashes with "normal" operation, or crashes when running a fuzzer or > other type of program? For me it crashed on boot. > > > The patch was already merged upstream here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > d=71472fa9c52b1da27663c275d416d8654b905f05 > > > > but then reverted here: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i > > d=896d81fefe5d1919537db2c2150ab6384e4a6610 > > > > Nathan confirmed if he applies the patch from > > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > > bug/problem goes away, so the patch (or similar fix) is still needed, at > > least for 4.9 LTS kernel. > > > > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > > https://www.spinics.net/lists/kernel/msg2440637.html > > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#26 > > 64604 > > > > Michael Neuling reported he's able to trigger the bug on PowerPC: > > https://lkml.org/lkml/2017/3/10/1582 > > > > > > So now the question is.. is anyone currently working on getting this patch > > fixed and applied upstream? I think one of the problems earlier was being > > able to reliable reproduce the crash.. Nathan says he's able to reproduce it > > many times per week on his environment on x86_64. > > I don't know of anyone working on it, want to do it yourself? I'm not anymore. We found it was only triggered on a bogus CONFIG option combination. Once we removed that, it no longer happened. The underlying bug was still there though. Mikey
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > Hello everyone, > > Recently Nathan March reported on centos-virt list he's getting frequent > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > "tty: Fix ldisc crash on reopened tty". Crashes with "normal" operation, or crashes when running a fuzzer or other type of program? > The patch was already merged upstream here: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 > > but then reverted here: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 > > Nathan confirmed if he applies the patch from > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > bug/problem goes away, so the patch (or similar fix) is still needed, at > least for 4.9 LTS kernel. > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > https://www.spinics.net/lists/kernel/msg2440637.html > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 > > Michael Neuling reported he's able to trigger the bug on PowerPC: > https://lkml.org/lkml/2017/3/10/1582 > > > So now the question is.. is anyone currently working on getting this patch > fixed and applied upstream? I think one of the problems earlier was being > able to reliable reproduce the crash.. Nathan says he's able to reproduce it > many times per week on his environment on x86_64. I don't know of anyone working on it, want to do it yourself? thanks, greg k-h
Re: Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
On Wed, Aug 30, 2017 at 11:10:14PM +0300, Pasi Kärkkäinen wrote: > Hello everyone, > > Recently Nathan March reported on centos-virt list he's getting frequent > Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch > "tty: Fix ldisc crash on reopened tty". Crashes with "normal" operation, or crashes when running a fuzzer or other type of program? > The patch was already merged upstream here: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 > > but then reverted here: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 > > Nathan confirmed if he applies the patch from > 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the > bug/problem goes away, so the patch (or similar fix) is still needed, at > least for 4.9 LTS kernel. > > > Mikulas reported he's able to trigger the same crash on Linux 4.10: > https://www.spinics.net/lists/kernel/msg2440637.html > https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 > > Michael Neuling reported he's able to trigger the bug on PowerPC: > https://lkml.org/lkml/2017/3/10/1582 > > > So now the question is.. is anyone currently working on getting this patch > fixed and applied upstream? I think one of the problems earlier was being > able to reliable reproduce the crash.. Nathan says he's able to reproduce it > many times per week on his environment on x86_64. I don't know of anyone working on it, want to do it yourself? thanks, greg k-h
Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
Hello everyone, Recently Nathan March reported on centos-virt list he's getting frequent Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch "tty: Fix ldisc crash on reopened tty". The patch was already merged upstream here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 but then reverted here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 Nathan confirmed if he applies the patch from 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the bug/problem goes away, so the patch (or similar fix) is still needed, at least for 4.9 LTS kernel. Mikulas reported he's able to trigger the same crash on Linux 4.10: https://www.spinics.net/lists/kernel/msg2440637.html https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 Michael Neuling reported he's able to trigger the bug on PowerPC: https://lkml.org/lkml/2017/3/10/1582 So now the question is.. is anyone currently working on getting this patch fixed and applied upstream? I think one of the problems earlier was being able to reliable reproduce the crash.. Nathan says he's able to reproduce it many times per week on his environment on x86_64. Thanks a lot, -- Pasi
Status of reverted Linux patch "tty: Fix ldisc crash on reopened tty", Linux 4.9 kernel frequent crashes
Hello everyone, Recently Nathan March reported on centos-virt list he's getting frequent Linux kernel crashes with Linux 4.9 LTS kernel because of the missing patch "tty: Fix ldisc crash on reopened tty". The patch was already merged upstream here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71472fa9c52b1da27663c275d416d8654b905f05 but then reverted here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=896d81fefe5d1919537db2c2150ab6384e4a6610 Nathan confirmed if he applies the patch from 71472fa9c52b1da27663c275d416d8654b905f05 to his Linux 4.9 LTS kernel the bug/problem goes away, so the patch (or similar fix) is still needed, at least for 4.9 LTS kernel. Mikulas reported he's able to trigger the same crash on Linux 4.10: https://www.spinics.net/lists/kernel/msg2440637.html https://lists.gt.net/linux/kernel/2664604?search_string=ldisc%20reopened;#2664604 Michael Neuling reported he's able to trigger the bug on PowerPC: https://lkml.org/lkml/2017/3/10/1582 So now the question is.. is anyone currently working on getting this patch fixed and applied upstream? I think one of the problems earlier was being able to reliable reproduce the crash.. Nathan says he's able to reproduce it many times per week on his environment on x86_64. Thanks a lot, -- Pasi
[PATCH] tty: Fix ldisc crash on reopened tty
From: Peter HurleyIf the tty has been hungup, the ldisc instance may have been destroyed. Continued input to the tty will be ignored as long as the ldisc instance is not visible to the flush_to_ldisc kworker. However, when the tty is reopened and a new ldisc instance is created, the flush_to_ldisc kworker can obtain an ldisc reference before the new ldisc is completely initialized. This will likely crash: BUG: unable to handle kernel paging request at 2260 IP: [] n_tty_receive_buf_common+0x6d/0xb80 PGD 2ab581067 PUD 290c11067 PMD 0 Oops: [#1] PREEMPT SMP Modules linked in: nls_iso8859_1 ip6table_filter [.] CPU: 2 PID: 103 Comm: kworker/u16:1 Not tainted 4.6.0-rc7+wip-xeon+debug #rc7+wip Hardware name: Dell Inc. Precision WorkStation T5400 /0RW203, BIOS A11 04/30/2012 Workqueue: events_unbound flush_to_ldisc task: 8802ad16d100 ti: 8802ad31c000 task.ti: 8802ad31c000 RIP: 0010:[] [] n_tty_receive_buf_common+0x6d/0xb80 RSP: 0018:8802ad31fc70 EFLAGS: 00010296 RAX: RBX: 8802aaddd800 RCX: 0001 RDX: RSI: 810db48f RDI: 0246 RBP: 8802ad31fd08 R08: R09: 0001 R10: 8802aadddb28 R11: 0001 R12: 8800ba6da808 R13: 8802ad18be80 R14: 8800ba6da858 R15: 8800ba6da800 FS: () GS:8802b0a0() knlGS: CS: 0010 DS: ES: CR0: 80050033 CR2: 2260 CR3: 00028ee5d000 CR4: 06e0 Stack: 81531219 8802aadddab8 8802aae0 8802aa78 0001 8800ba6da858 8800ba6da860 8802ad31fd30 81885f78 81531219 0002 Call Trace: [] ? flush_to_ldisc+0x49/0xd0 [] ? mutex_lock_nested+0x2c8/0x430 [] ? flush_to_ldisc+0x49/0xd0 [] n_tty_receive_buf2+0x14/0x20 [] tty_ldisc_receive_buf+0x22/0x50 [] flush_to_ldisc+0xbe/0xd0 [] process_one_work+0x1ed/0x6e0 [] ? process_one_work+0x16f/0x6e0 [] worker_thread+0x4e/0x490 [] ? process_one_work+0x6e0/0x6e0 [] kthread+0xf2/0x110 [] ? preempt_count_sub+0x4c/0x80 [] ret_from_fork+0x22/0x50 [] ? kthread_create_on_node+0x220/0x220 Code: ff ff e8 27 a0 35 00 48 8d 83 78 05 00 00 c7 45 c0 00 00 00 00 48 89 45 80 48 8d 83 e0 05 00 00 48 89 85 78 ff ff ff 48 8b 45 b8 <48> 8b b8 60 22 00 00 48 8b 30 89 f8 8b 8b 88 04 00 00 29 f0 8d RIP [] n_tty_receive_buf_common+0x6d/0xb80 RSP CR2: 2260 Ensure the kworker cannot obtain the ldisc reference until the new ldisc is completely initialized. Fixes: 892d1fa7eaae ("tty: Destroy ldisc instance on hangup") Reported-by: Mikulas Patocka Signed-off-by: Peter Hurley Signed-off-by: Michael Neuling --- gregkh, can you take this? It never made it upstream and Peter Hurley doesn't seem to be responding to email since mid 2016. I'm reposting this from https://patchwork.kernel.org/patch/9114561/ Fixes an issue on powerpc too. --- drivers/tty/tty_ldisc.c | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c index 68947f6de5..4ee7742dce 100644 --- a/drivers/tty/tty_ldisc.c +++ b/drivers/tty/tty_ldisc.c @@ -669,16 +669,17 @@ int tty_ldisc_reinit(struct tty_struct *tty, int disc) tty_ldisc_put(tty->ldisc); } - /* switch the line discipline */ - tty->ldisc = ld; tty_set_termios_ldisc(tty, disc); - retval = tty_ldisc_open(tty, tty->ldisc); + retval = tty_ldisc_open(tty, ld); if (retval) { if (!WARN_ON(disc == N_TTY)) { - tty_ldisc_put(tty->ldisc); - tty->ldisc = NULL; + tty_ldisc_put(ld); + ld = NULL; } } + + /* switch the line discipline */ + smp_store_release(>ldisc, ld); return retval; } -- 2.9.3
[PATCH] tty: Fix ldisc crash on reopened tty
From: Peter Hurley If the tty has been hungup, the ldisc instance may have been destroyed. Continued input to the tty will be ignored as long as the ldisc instance is not visible to the flush_to_ldisc kworker. However, when the tty is reopened and a new ldisc instance is created, the flush_to_ldisc kworker can obtain an ldisc reference before the new ldisc is completely initialized. This will likely crash: BUG: unable to handle kernel paging request at 2260 IP: [] n_tty_receive_buf_common+0x6d/0xb80 PGD 2ab581067 PUD 290c11067 PMD 0 Oops: [#1] PREEMPT SMP Modules linked in: nls_iso8859_1 ip6table_filter [.] CPU: 2 PID: 103 Comm: kworker/u16:1 Not tainted 4.6.0-rc7+wip-xeon+debug #rc7+wip Hardware name: Dell Inc. Precision WorkStation T5400 /0RW203, BIOS A11 04/30/2012 Workqueue: events_unbound flush_to_ldisc task: 8802ad16d100 ti: 8802ad31c000 task.ti: 8802ad31c000 RIP: 0010:[] [] n_tty_receive_buf_common+0x6d/0xb80 RSP: 0018:8802ad31fc70 EFLAGS: 00010296 RAX: RBX: 8802aaddd800 RCX: 0001 RDX: RSI: 810db48f RDI: 0246 RBP: 8802ad31fd08 R08: R09: 0001 R10: 8802aadddb28 R11: 0001 R12: 8800ba6da808 R13: 8802ad18be80 R14: 8800ba6da858 R15: 8800ba6da800 FS: () GS:8802b0a0() knlGS: CS: 0010 DS: ES: CR0: 80050033 CR2: 2260 CR3: 00028ee5d000 CR4: 06e0 Stack: 81531219 8802aadddab8 8802aae0 8802aa78 0001 8800ba6da858 8800ba6da860 8802ad31fd30 81885f78 81531219 0002 Call Trace: [] ? flush_to_ldisc+0x49/0xd0 [] ? mutex_lock_nested+0x2c8/0x430 [] ? flush_to_ldisc+0x49/0xd0 [] n_tty_receive_buf2+0x14/0x20 [] tty_ldisc_receive_buf+0x22/0x50 [] flush_to_ldisc+0xbe/0xd0 [] process_one_work+0x1ed/0x6e0 [] ? process_one_work+0x16f/0x6e0 [] worker_thread+0x4e/0x490 [] ? process_one_work+0x6e0/0x6e0 [] kthread+0xf2/0x110 [] ? preempt_count_sub+0x4c/0x80 [] ret_from_fork+0x22/0x50 [] ? kthread_create_on_node+0x220/0x220 Code: ff ff e8 27 a0 35 00 48 8d 83 78 05 00 00 c7 45 c0 00 00 00 00 48 89 45 80 48 8d 83 e0 05 00 00 48 89 85 78 ff ff ff 48 8b 45 b8 <48> 8b b8 60 22 00 00 48 8b 30 89 f8 8b 8b 88 04 00 00 29 f0 8d RIP [] n_tty_receive_buf_common+0x6d/0xb80 RSP CR2: 2260 Ensure the kworker cannot obtain the ldisc reference until the new ldisc is completely initialized. Fixes: 892d1fa7eaae ("tty: Destroy ldisc instance on hangup") Reported-by: Mikulas Patocka Signed-off-by: Peter Hurley Signed-off-by: Michael Neuling --- gregkh, can you take this? It never made it upstream and Peter Hurley doesn't seem to be responding to email since mid 2016. I'm reposting this from https://patchwork.kernel.org/patch/9114561/ Fixes an issue on powerpc too. --- drivers/tty/tty_ldisc.c | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c index 68947f6de5..4ee7742dce 100644 --- a/drivers/tty/tty_ldisc.c +++ b/drivers/tty/tty_ldisc.c @@ -669,16 +669,17 @@ int tty_ldisc_reinit(struct tty_struct *tty, int disc) tty_ldisc_put(tty->ldisc); } - /* switch the line discipline */ - tty->ldisc = ld; tty_set_termios_ldisc(tty, disc); - retval = tty_ldisc_open(tty, tty->ldisc); + retval = tty_ldisc_open(tty, ld); if (retval) { if (!WARN_ON(disc == N_TTY)) { - tty_ldisc_put(tty->ldisc); - tty->ldisc = NULL; + tty_ldisc_put(ld); + ld = NULL; } } + + /* switch the line discipline */ + smp_store_release(>ldisc, ld); return retval; } -- 2.9.3