mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
lkdtm: add "SPINLOCKUP" trigger
For additional lockup testing, add "SPINLOCKUP" to trigger a spinlock deadlock when triggered twice. Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
65892723c3
commit
274a5855c0
@ -78,6 +78,7 @@ enum ctype {
|
||||
CT_WRITE_AFTER_FREE,
|
||||
CT_SOFTLOCKUP,
|
||||
CT_HARDLOCKUP,
|
||||
CT_SPINLOCKUP,
|
||||
CT_HUNG_TASK,
|
||||
};
|
||||
|
||||
@ -106,6 +107,7 @@ static char* cp_type[] = {
|
||||
"WRITE_AFTER_FREE",
|
||||
"SOFTLOCKUP",
|
||||
"HARDLOCKUP",
|
||||
"SPINLOCKUP",
|
||||
"HUNG_TASK",
|
||||
};
|
||||
|
||||
@ -123,6 +125,7 @@ static enum cname cpoint = CN_INVALID;
|
||||
static enum ctype cptype = CT_NONE;
|
||||
static int count = DEFAULT_COUNT;
|
||||
static DEFINE_SPINLOCK(count_lock);
|
||||
static DEFINE_SPINLOCK(lock_me_up);
|
||||
|
||||
module_param(recur_count, int, 0644);
|
||||
MODULE_PARM_DESC(recur_count, " Recursion level for the stack overflow test, "\
|
||||
@ -345,6 +348,10 @@ static void lkdtm_do_action(enum ctype which)
|
||||
for (;;)
|
||||
cpu_relax();
|
||||
break;
|
||||
case CT_SPINLOCKUP:
|
||||
/* Must be called twice to trigger. */
|
||||
spin_lock(&lock_me_up);
|
||||
break;
|
||||
case CT_HUNG_TASK:
|
||||
set_current_state(TASK_UNINTERRUPTIBLE);
|
||||
schedule();
|
||||
|
Loading…
Reference in New Issue
Block a user