tty: vt: replace BUG_ON() by WARN_ON_ONCE()
authorJiri Slaby (SUSE) <jirislaby@kernel.org>
Thu, 12 Jan 2023 08:01:32 +0000 (09:01 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jan 2023 14:06:42 +0000 (15:06 +0100)
No need to panic in vc_uniscr_copy_line(), just warn. This should never
happen though, as vc_uniscr_check() is supposed to be called before
vc_uniscr_copy_line(). And the former checks vc->vc_uni_lines already.

In any case, use _ONCE as vc_uniscr_copy_line() is called repeatedly for
each line. So don't flood the logs, just in case.

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20230112080136.4929-7-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/vt.c

index 0487d7d20f7331b97dac74e22d1556ec7b1f028f..f81f77464f8563cc04570f1bdcb6ceae6f5b0762 100644 (file)
@@ -535,7 +535,8 @@ void vc_uniscr_copy_line(const struct vc_data *vc, void *dest, bool viewed,
        int offset = row * vc->vc_size_row + col * 2;
        unsigned long pos;
 
-       BUG_ON(!uni_lines);
+       if (WARN_ON_ONCE(!uni_lines))
+               return;
 
        pos = (unsigned long)screenpos(vc, offset, viewed);
        if (pos >= vc->vc_origin && pos < vc->vc_scr_end) {