linux/drivers/tty
David Daney 1b45996d2e tty: vt: Fix soft lockup in fbcon cursor blink timer.
We are getting somewhat random soft lockups with this signature:

[   86.992215] [<fffffc00080935e0>] el1_irq+0xa0/0x10c
[   86.997082] [<fffffc000841822c>] cursor_timer_handler+0x30/0x54
[   87.002991] [<fffffc000810ec44>] call_timer_fn+0x54/0x1a8
[   87.008378] [<fffffc000810ef88>] run_timer_softirq+0x1c4/0x2bc
[   87.014200] [<fffffc000809077c>] __do_softirq+0x114/0x344
[   87.019590] [<fffffc00080af45c>] irq_exit+0x74/0x98
[   87.024458] [<fffffc00080fac20>] __handle_domain_irq+0x98/0xfc
[   87.030278] [<fffffc000809056c>] gic_handle_irq+0x94/0x190

This is caused by the vt visual_init() function calling into
fbcon_init() with a vc_cur_blink_ms value of zero.  This is a
transient condition, as it is later set to a non-zero value.  But, if
the timer happens to expire while the blink rate is zero, it goes into
an endless loop, and we get soft lockup.

The fix is to initialize vc_cur_blink_ms before calling the con_init()
function.

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: stable@vger.kernel.org
Acked-by: Pavel Machek <pavel@ucw.cz>
Tested-by: Ming Lei <ming.lei@canonical.com>
Acked-by: Scot Doyle <lkml14@scotdoyle.com>
Tested-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-06-25 10:41:13 -07:00
..
hvc tty: hvc_console: silence unintialized variable warning 2016-04-30 09:26:55 -07:00
ipwireless tty: ipwireless: fix possible NULL dereference 2016-04-30 09:26:55 -07:00
serial remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
vt tty: vt: Fix soft lockup in fbcon cursor blink timer. 2016-06-25 10:41:13 -07:00
amiserial.c tty: Replace ASYNC_INITIALIZED bit and update atomically 2016-04-30 09:26:55 -07:00
bfin_jtag_comm.c
cyclades.c tty: Replace ASYNC_INITIALIZED bit and update atomically 2016-04-30 09:26:55 -07:00
ehv_bytechan.c
goldfish.c
isicom.c tty: Replace ASYNC_INITIALIZED bit and update atomically 2016-04-30 09:26:55 -07:00
Kconfig devpts: Make each mount of devpts an independent filesystem. 2016-06-05 10:36:01 -07:00
Makefile
metag_da.c
mips_ejtag_fdc.c
moxa.c tty: Replace ASYNC_INITIALIZED bit and update atomically 2016-04-30 09:26:55 -07:00
moxa.h
mxser.c tty: mxser: Remove unused ASYNC_SHARE_IRQ flag 2016-04-30 09:26:55 -07:00
mxser.h
n_gsm.c TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
n_hdlc.c Fix OpenSSH pty regression on close 2016-05-01 13:22:54 -07:00
n_r3964.c
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c Fix OpenSSH pty regression on close 2016-05-01 13:22:54 -07:00
nozomi.c tty: Replace TTY_THROTTLED bit tests with tty_throttled() 2016-04-30 09:26:55 -07:00
pty.c devpts: Make each mount of devpts an independent filesystem. 2016-06-05 10:36:01 -07:00
rocket_int.h
rocket.c TTY: add __init attribute 2016-04-30 09:26:55 -07:00
rocket.h
synclink_gt.c TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
synclink.c TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
synclinkmp.c TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
sysrq.c
tty_audit.c
tty_buffer.c Fix OpenSSH pty regression on close 2016-05-01 13:22:54 -07:00
tty_io.c Merge 4.6-rc7 into tty-next 2016-05-09 09:39:13 +02:00
tty_ioctl.c tty: Replace TTY_THROTTLED bit tests with tty_throttled() 2016-04-30 09:26:55 -07:00
tty_ldisc.c
tty_ldsem.c
tty_mutex.c
tty_port.c tty: Replace ASYNC_INITIALIZED bit and update atomically 2016-04-30 09:26:55 -07:00