From: Jiri Slaby Date: Mon, 15 Jun 2020 07:48:47 +0000 (+0200) Subject: vt: move rescan_last_byte label earlier X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~1513^2~76 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=0d1ffef5782628aede95d5390c658c2027c53c55;p=linux.git vt: move rescan_last_byte label earlier This removes duplicated initialization of variables (after reordering 'c' initialization). It will also allow for eliminating whole translation into a separate function in the next patch. Note that vc_state, vc_utf etc. are checked with every rescan now. But they are immutable for non-control characters where rescan might be only necessary. Signed-off-by: Jiri Slaby Link: https://lore.kernel.org/r/20200615074910.19267-15-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index bf171bb1d2fd..93ad7e004900 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -2717,10 +2717,11 @@ static int do_con_write(struct tty_struct *tty, const unsigned char *buf, int co while (!tty->stopped && count) { int orig = *buf; - c = orig; buf++; n++; count--; +rescan_last_byte: + c = orig; rescan = false; inverse = false; width = 1; @@ -2729,7 +2730,6 @@ static int do_con_write(struct tty_struct *tty, const unsigned char *buf, int co if (vc->vc_state != ESnormal) { tc = c; } else if (vc->vc_utf && !vc->vc_disp_ctrl) { -rescan_last_byte: tc = c = vc_translate_unicode(vc, c, &rescan); if (tc == -1) continue; @@ -2834,13 +2834,9 @@ rescan_last_byte: if (inverse) con_flush(vc, draw_from, draw_to, &draw_x); - if (rescan) { - rescan = false; - inverse = false; - width = 1; - c = orig; + if (rescan) goto rescan_last_byte; - } + continue; } con_flush(vc, draw_from, draw_to, &draw_x);