diff options
Diffstat (limited to 'kernel/locking/locktorture.c')
| -rw-r--r-- | kernel/locking/locktorture.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c index f26b1a18e34e..0955b885d0dc 100644 --- a/kernel/locking/locktorture.c +++ b/kernel/locking/locktorture.c @@ -82,14 +82,14 @@ struct lock_writer_stress_stats {  };  static struct lock_writer_stress_stats *lwsa; -#if defined(MODULE) || defined(CONFIG_LOCK_TORTURE_TEST_RUNNABLE) +#if defined(MODULE)  #define LOCKTORTURE_RUNNABLE_INIT 1  #else  #define LOCKTORTURE_RUNNABLE_INIT 0  #endif  int locktorture_runnable = LOCKTORTURE_RUNNABLE_INIT;  module_param(locktorture_runnable, int, 0444); -MODULE_PARM_DESC(locktorture_runnable, "Start locktorture at boot"); +MODULE_PARM_DESC(locktorture_runnable, "Start locktorture at module init");  /* Forward reference. */  static void lock_torture_cleanup(void); @@ -216,10 +216,11 @@ static int lock_torture_writer(void *arg)  	static DEFINE_TORTURE_RANDOM(rand);  	VERBOSE_TOROUT_STRING("lock_torture_writer task started"); -	set_user_nice(current, 19); +	set_user_nice(current, MAX_NICE);  	do { -		schedule_timeout_uninterruptible(1); +		if ((torture_random(&rand) & 0xfffff) == 0) +			schedule_timeout_uninterruptible(1);  		cur_ops->writelock();  		if (WARN_ON_ONCE(lock_is_write_held))  			lwsp->n_write_lock_fail++; @@ -354,7 +355,8 @@ static int __init lock_torture_init(void)  		&lock_busted_ops, &spin_lock_ops, &spin_lock_irq_ops,  	}; -	torture_init_begin(torture_type, verbose, &locktorture_runnable); +	if (!torture_init_begin(torture_type, verbose, &locktorture_runnable)) +		return -EBUSY;  	/* Process args and tell the world that the torturer is on the job. */  	for (i = 0; i < ARRAY_SIZE(torture_ops); i++) { | 
