From 2e210396faf2962519ca5d7775479101be542b0d Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Wed, 26 May 2010 14:44:29 -0700 Subject: [PATCH] --- yaml --- r: 198839 b: refs/heads/master c: a48223f9449d0289fc20cd11a98758109830798e h: refs/heads/master i: 198837: aa81380fba3a58c48b7f5e195cc86abeb4b909c6 198835: 0fc8d4cd03fd020395336550c3d8b2facb242e85 198831: 30af8ce87173766f3290631f0273ec89673c2d16 v: v3 --- [refs] | 2 +- trunk/drivers/misc/lkdtm.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 43302065d4da..f0accc448176 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2a2a400f66e9e23eba960905c36dd37904bd9970 +refs/heads/master: a48223f9449d0289fc20cd11a98758109830798e diff --git a/trunk/drivers/misc/lkdtm.c b/trunk/drivers/misc/lkdtm.c index 31a991161f0a..5bfb2a2041b8 100644 --- a/trunk/drivers/misc/lkdtm.c +++ b/trunk/drivers/misc/lkdtm.c @@ -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;