提交 a48223f9 编写于 作者: F Frederic Weisbecker 提交者: Linus Torvalds

lktdm: add support for hardlockup, softlockup and hung task crashes

This adds three new types of kernel "crashes" in the lkdtm driver to
trigger hardlockups, softlockups and task hung states at will.

The first two are useful to test the new generic lockup detector and check
its further regressions.  The latter one is a bonus to check the hung task
detector regressions even though it's not currently in rework.
Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
Cc: Simon Kagstrom <simon.kagstrom@netinsight.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 2a2a400f
......@@ -75,6 +75,9 @@ enum ctype {
UNALIGNED_LOAD_STORE_WRITE,
OVERWRITE_ALLOCATION,
WRITE_AFTER_FREE,
SOFTLOCKUP,
HARDLOCKUP,
HUNG_TASK,
};
static char* cp_name[] = {
......@@ -99,6 +102,9 @@ static char* cp_type[] = {
"UNALIGNED_LOAD_STORE_WRITE",
"OVERWRITE_ALLOCATION",
"WRITE_AFTER_FREE",
"SOFTLOCKUP",
"HARDLOCKUP",
"HUNG_TASK",
};
static struct jprobe lkdtm;
......@@ -320,6 +326,20 @@ static void lkdtm_do_action(enum ctype which)
memset(data, 0x78, len);
break;
}
case SOFTLOCKUP:
preempt_disable();
for (;;)
cpu_relax();
break;
case HARDLOCKUP:
local_irq_disable();
for (;;)
cpu_relax();
break;
case HUNG_TASK:
set_current_state(TASK_UNINTERRUPTIBLE);
schedule();
break;
case NONE:
default:
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册