kdb: Re-factor kdb_printf() message write code
authorSumit Garg <sumit.garg@linaro.org>
Thu, 4 Jun 2020 10:01:16 +0000 (15:31 +0530)
committerDaniel Thompson <daniel.thompson@linaro.org>
Thu, 25 Jun 2020 11:04:29 +0000 (12:04 +0100)
Re-factor kdb_printf() message write code in order to avoid duplication
of code and thereby increase readability.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/1591264879-25920-2-git-send-email-sumit.garg@linaro.org
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
kernel/debug/kdb/kdb_io.c

index 924bc92..2d42a02 100644 (file)
@@ -542,6 +542,29 @@ static int kdb_search_string(char *searched, char *searchfor)
        return 0;
 }
 
+static void kdb_msg_write(const char *msg, int msg_len)
+{
+       struct console *c;
+
+       if (msg_len == 0)
+               return;
+
+       if (dbg_io_ops && !dbg_io_ops->is_console) {
+               const char *cp = msg;
+               int len = msg_len;
+
+               while (len--) {
+                       dbg_io_ops->write_char(*cp);
+                       cp++;
+               }
+       }
+
+       for_each_console(c) {
+               c->write(c, msg, msg_len);
+               touch_nmi_watchdog();
+       }
+}
+
 int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
 {
        int diag;
@@ -553,7 +576,6 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
        int this_cpu, old_cpu;
        char *cp, *cp2, *cphold = NULL, replaced_byte = ' ';
        char *moreprompt = "more> ";
-       struct console *c;
        unsigned long uninitialized_var(flags);
 
        /* Serialize kdb_printf if multiple cpus try to write at once.
@@ -687,22 +709,11 @@ kdb_printit:
         */
        retlen = strlen(kdb_buffer);
        cp = (char *) printk_skip_headers(kdb_buffer);
-       if (!dbg_kdb_mode && kgdb_connected) {
+       if (!dbg_kdb_mode && kgdb_connected)
                gdbstub_msg_write(cp, retlen - (cp - kdb_buffer));
-       } else {
-               if (dbg_io_ops && !dbg_io_ops->is_console) {
-                       len = retlen - (cp - kdb_buffer);
-                       cp2 = cp;
-                       while (len--) {
-                               dbg_io_ops->write_char(*cp2);
-                               cp2++;
-                       }
-               }
-               for_each_console(c) {
-                       c->write(c, cp, retlen - (cp - kdb_buffer));
-                       touch_nmi_watchdog();
-               }
-       }
+       else
+               kdb_msg_write(cp, retlen - (cp - kdb_buffer));
+
        if (logging) {
                saved_loglevel = console_loglevel;
                console_loglevel = CONSOLE_LOGLEVEL_SILENT;
@@ -751,19 +762,7 @@ kdb_printit:
                        moreprompt = "more> ";
 
                kdb_input_flush();
-
-               if (dbg_io_ops && !dbg_io_ops->is_console) {
-                       len = strlen(moreprompt);
-                       cp = moreprompt;
-                       while (len--) {
-                               dbg_io_ops->write_char(*cp);
-                               cp++;
-                       }
-               }
-               for_each_console(c) {
-                       c->write(c, moreprompt, strlen(moreprompt));
-                       touch_nmi_watchdog();
-               }
+               kdb_msg_write(moreprompt, strlen(moreprompt));
 
                if (logging)
                        printk("%s", moreprompt);