]> exis.tech > repos - linux.git/blobdiff - lib/bug.c
Merge tag 'hwmon-for-v7.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groec...
[linux.git] / lib / bug.c
index d99e369bc110320ac420c1a95507e2302479dbb3..7c1c2c27f58e75f532e7be3f66548467f4caeb16 100644 (file)
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -1,41 +1,41 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
-  Generic support for BUG()
-
-  This respects the following config options:
-
-  CONFIG_BUG - emit BUG traps.  Nothing happens without this.
-  CONFIG_GENERIC_BUG - enable this code.
-  CONFIG_GENERIC_BUG_RELATIVE_POINTERS - use 32-bit relative pointers for bug_addr and file
-  CONFIG_DEBUG_BUGVERBOSE - emit full file+line information for each BUG
-
-  CONFIG_BUG and CONFIG_DEBUG_BUGVERBOSE are potentially user-settable
-  (though they're generally always on).
-
-  CONFIG_GENERIC_BUG is set by each architecture using this code.
-
-  To use this, your architecture must:
-
-  1. Set up the config options:
-     - Enable CONFIG_GENERIC_BUG if CONFIG_BUG
-
-  2. Implement BUG (and optionally BUG_ON, WARN, WARN_ON)
-     - Define HAVE_ARCH_BUG
-     - Implement BUG() to generate a faulting instruction
-     - NOTE: struct bug_entry does not have "file" or "line" entries
-       when CONFIG_DEBUG_BUGVERBOSE is not enabled, so you must generate
-       the values accordingly.
-
-  3. Implement the trap
-     - In the illegal instruction trap handler (typically), verify
-       that the fault was in kernel mode, and call report_bug()
-     - report_bug() will return whether it was a false alarm, a warning,
-       or an actual bug.
-     - You must implement the is_valid_bugaddr(bugaddr) callback which
-       returns true if the eip is a real kernel address, and it points
-       to the expected BUG trap instruction.
-
-    Jeremy Fitzhardinge <jeremy@goop.org> 2006
 Generic support for BUG()
+ *
 This respects the following config options:
+ *
 CONFIG_BUG - emit BUG traps.  Nothing happens without this.
 CONFIG_GENERIC_BUG - enable this code.
 CONFIG_GENERIC_BUG_RELATIVE_POINTERS - use 32-bit relative pointers for bug_addr and file
 CONFIG_DEBUG_BUGVERBOSE - emit full file+line information for each BUG
+ *
 CONFIG_BUG and CONFIG_DEBUG_BUGVERBOSE are potentially user-settable
 (though they're generally always on).
+ *
 CONFIG_GENERIC_BUG is set by each architecture using this code.
+ *
 To use this, your architecture must:
+ *
 1. Set up the config options:
    - Enable CONFIG_GENERIC_BUG if CONFIG_BUG
+ *
 2. Implement BUG (and optionally BUG_ON, WARN, WARN_ON)
    - Define HAVE_ARCH_BUG
    - Implement BUG() to generate a faulting instruction
    - NOTE: struct bug_entry does not have "file" or "line" entries
      when CONFIG_DEBUG_BUGVERBOSE is not enabled, so you must generate
      the values accordingly.
+ *
 3. Implement the trap
    - In the illegal instruction trap handler (typically), verify
      that the fault was in kernel mode, and call report_bug()
    - report_bug() will return whether it was a false alarm, a warning,
      or an actual bug.
    - You must implement the is_valid_bugaddr(bugaddr) callback which
      returns true if the eip is a real kernel address, and it points
      to the expected BUG trap instruction.
+ *
   Jeremy Fitzhardinge <jeremy@goop.org> 2006
  */
 
 #define pr_fmt(fmt) fmt
@@ -72,7 +72,7 @@ static struct bug_entry *module_find_bug(unsigned long bugaddr)
 
        guard(rcu)();
        list_for_each_entry_rcu(mod, &module_bug_list, bug_list) {
-               unsigned i;
+               unsigned int i;
 
                bug = mod->bug_table;
                for (i = 0; i < mod->num_bugs; ++i, ++bug)
@@ -192,14 +192,14 @@ void __warn_printf(const char *fmt, struct pt_regs *regs)
        }
 #endif
 
-       printk("%s", fmt);
+       pr_warn("%s", fmt);
 }
 
 static enum bug_trap_type __report_bug(struct bug_entry *bug, unsigned long bugaddr, struct pt_regs *regs)
 {
        bool warning, once, done, no_cut, has_args;
        const char *file, *fmt;
-       unsigned line;
+       unsigned int line;
 
        if (!bug) {
                if (!is_valid_bugaddr(bugaddr))
@@ -219,14 +219,12 @@ static enum bug_trap_type __report_bug(struct bug_entry *bug, unsigned long buga
        no_cut   = bug->flags & BUGFLAG_NO_CUT_HERE;
        has_args = bug->flags & BUGFLAG_ARGS;
 
-#ifdef CONFIG_KUNIT
        /*
         * Before the once logic so suppressed warnings do not consume
         * the single-fire budget of WARN_ON_ONCE().
         */
        if (warning && kunit_is_suppressed_warning(true))
                return BUG_TRAP_TYPE_WARN;
-#endif
 
        disable_trace_on_warning();
 
@@ -247,7 +245,7 @@ static enum bug_trap_type __report_bug(struct bug_entry *bug, unsigned long buga
         * extra debugging message it writes before triggering the handler.
         */
        if (!no_cut) {
-               printk(KERN_DEFAULT CUT_HERE);
+               pr_info(CUT_HERE);
                __warn_printf(fmt, has_args ? regs : NULL);
        }