diff options
| author | David S. Miller <davem@davemloft.net> | 2011-07-05 23:23:37 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-07-05 23:23:37 -0700 | 
| commit | e12fe68ce34d60c04bb1ddb1d3cc5c3022388fe4 (patch) | |
| tree | 83c0e192ccaa4752c80b6131a7d0aa8272b5d0d0 /drivers/misc/lkdtm.c | |
| parent | 7329f0d58de01878d9ce4f0be7a76e136f223eef (diff) | |
| parent | 712ae51afd55b20c04c5383d02ba5d10233313b1 (diff) | |
| download | olio-linux-3.10-e12fe68ce34d60c04bb1ddb1d3cc5c3022388fe4.tar.xz olio-linux-3.10-e12fe68ce34d60c04bb1ddb1d3cc5c3022388fe4.zip  | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'drivers/misc/lkdtm.c')
| -rw-r--r-- | drivers/misc/lkdtm.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c index 81d7fa4ec0d..150cd7061b8 100644 --- a/drivers/misc/lkdtm.c +++ b/drivers/misc/lkdtm.c @@ -120,6 +120,7 @@ static int recur_count = REC_NUM_DEFAULT;  static enum cname cpoint = CN_INVALID;  static enum ctype cptype = CT_NONE;  static int count = DEFAULT_COUNT; +static DEFINE_SPINLOCK(count_lock);  module_param(recur_count, int, 0644);  MODULE_PARM_DESC(recur_count, " Recursion level for the stack overflow test, "\ @@ -230,11 +231,14 @@ static const char *cp_name_to_str(enum cname name)  static int lkdtm_parse_commandline(void)  {  	int i; +	unsigned long flags;  	if (cpoint_count < 1 || recur_count < 1)  		return -EINVAL; +	spin_lock_irqsave(&count_lock, flags);  	count = cpoint_count; +	spin_unlock_irqrestore(&count_lock, flags);  	/* No special parameters */  	if (!cpoint_type && !cpoint_name) @@ -349,6 +353,9 @@ static void lkdtm_do_action(enum ctype which)  static void lkdtm_handler(void)  { +	unsigned long flags; + +	spin_lock_irqsave(&count_lock, flags);  	count--;  	printk(KERN_INFO "lkdtm: Crash point %s of type %s hit, trigger in %d rounds\n",  			cp_name_to_str(cpoint), cp_type_to_str(cptype), count); @@ -357,6 +364,7 @@ static void lkdtm_handler(void)  		lkdtm_do_action(cptype);  		count = cpoint_count;  	} +	spin_unlock_irqrestore(&count_lock, flags);  }  static int lkdtm_register_cpoint(enum cname which)  |