Re: [PATCH] fbcon: warn on invalid cursor blink intervals

Henrique de Moraes Holschuh
2016-05-28T11:45:20Z

On Thu, 19 May 2016, Scot Doyle wrote:
> Two systems are locking on boot [1] because ops->cur_blink_jiffies
> is set to zero from vc->vc_cur_blink_ms.
>
> Ignore such invalid intervals and log a warning.
>
> [1] https://bugs.launchpad.net/bugs/1574814
>
> Suggested-by: David Daney <david.daney@cavium.com>
> Signed-off-by: Scot Doyle <lkml14@scotdoyle.com>
> Cc: <stable@vger.kernel.org> [v4.2]

FWIW:
Tested-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> on top of 4.4.11.

And nothing caused it to issue warnings here, so far (with the other
recommended patch applied first).

> ---
> drivers/video/console/fbcon.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
> index 6e92917..fad5b89 100644
> --- a/drivers/video/console/fbcon.c
> +++ b/drivers/video/console/fbcon.c
> @@ -1095,7 +1095,13 @@ static void fbcon_init(struct vc_data *vc, int init)
> con_copy_unimap(vc, svc);
>
> ops = info->fbcon_par;
> - ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
> +
> + if (vc->vc_cur_blink_ms >= 50)
> + ops->cur_blink_jiffies =
> + msecs_to_jiffies(vc->vc_cur_blink_ms);
> + else
> + WARN_ONCE(1, "blink interval < 50 ms");
> +
> p->con_rotate = initial_rotation;
> set_blitting_type(vc, info);
>
> @@ -1309,7 +1315,11 @@ static void fbcon_cursor(struct vc_data *vc, int mode)
> int y;
> int c = scr_readw((u16 *) vc->vc_pos);
>
> - ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
> + if (vc->vc_cur_blink_ms >= 50)
> + ops->cur_blink_jiffies =
> + msecs_to_jiffies(vc->vc_cur_blink_ms);
> + else
> + WARN_ONCE(1, "blink interval < 50 ms");
>
> if (fbcon_is_inactive(vc, info) || vc->vc_deccm != 1)
> return;

--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh