diff options
Diffstat (limited to 'drivers/misc/lkdtm.c')
-rw-r--r-- | drivers/misc/lkdtm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c index 150cd7061b80..28adefe70f96 100644 --- a/drivers/misc/lkdtm.c +++ b/drivers/misc/lkdtm.c | |||
@@ -354,6 +354,7 @@ static void lkdtm_do_action(enum ctype which) | |||
354 | static void lkdtm_handler(void) | 354 | static void lkdtm_handler(void) |
355 | { | 355 | { |
356 | unsigned long flags; | 356 | unsigned long flags; |
357 | bool do_it = false; | ||
357 | 358 | ||
358 | spin_lock_irqsave(&count_lock, flags); | 359 | spin_lock_irqsave(&count_lock, flags); |
359 | count--; | 360 | count--; |
@@ -361,10 +362,13 @@ static void lkdtm_handler(void) | |||
361 | cp_name_to_str(cpoint), cp_type_to_str(cptype), count); | 362 | cp_name_to_str(cpoint), cp_type_to_str(cptype), count); |
362 | 363 | ||
363 | if (count == 0) { | 364 | if (count == 0) { |
364 | lkdtm_do_action(cptype); | 365 | do_it = true; |
365 | count = cpoint_count; | 366 | count = cpoint_count; |
366 | } | 367 | } |
367 | spin_unlock_irqrestore(&count_lock, flags); | 368 | spin_unlock_irqrestore(&count_lock, flags); |
369 | |||
370 | if (do_it) | ||
371 | lkdtm_do_action(cptype); | ||
368 | } | 372 | } |
369 | 373 | ||
370 | static int lkdtm_register_cpoint(enum cname which) | 374 | static int lkdtm_register_cpoint(enum cname which) |