mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
kernel debug: support resetting WARN*_ONCE
I like _ONCE warnings because it's guaranteed that they don't flood the log. During testing I find it useful to reset the state of the once warnings, so that I can rerun tests and see if they trigger again, or can guarantee that a test run always hits the same warnings. This patch adds a debugfs interface to reset all the _ONCE warnings so that they appear again: echo 1 > /sys/kernel/debug/clear_warn_once This is implemented by putting all the warning booleans into a special section, and clearing it. [akpm@linux-foundation.org: coding-style fixes] Link: http://lkml.kernel.org/r/20171017221455.6740-1-andi@firstfloor.org Signed-off-by: Andi Kleen <ak@linux.intel.com> Tested-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
fb6cc4ac15
commit
b1fca27d38
@@ -27,6 +27,8 @@
|
||||
#include <linux/console.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
#define PANIC_TIMER_STEP 100
|
||||
#define PANIC_BLINK_SPD 18
|
||||
@@ -587,6 +589,32 @@ void warn_slowpath_null(const char *file, int line)
|
||||
EXPORT_SYMBOL(warn_slowpath_null);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
|
||||
/* Support resetting WARN*_ONCE state */
|
||||
|
||||
static int clear_warn_once_set(void *data, u64 val)
|
||||
{
|
||||
memset(__start_once, 0, __end_once - __start_once);
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_SIMPLE_ATTRIBUTE(clear_warn_once_fops,
|
||||
NULL,
|
||||
clear_warn_once_set,
|
||||
"%lld\n");
|
||||
|
||||
static __init int register_warn_debugfs(void)
|
||||
{
|
||||
/* Don't care about failure */
|
||||
debugfs_create_file("clear_warn_once", 0644, NULL,
|
||||
NULL, &clear_warn_once_fops);
|
||||
return 0;
|
||||
}
|
||||
|
||||
device_initcall(register_warn_debugfs);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user