Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull locking fixes from Ingo Molnar: - Change the new refcount_t warnings from WARN() to WARN_ONCE() - two ww_mutex fixes - plus a new lockdep self-consistency check for a bug that triggered in practice * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: locking/ww_mutex: Adjust the lock number for stress test locking/lockdep: Add nest_lock integrity test locking/ww_mutex: Replace cpu_relax() with cond_resched() for tests locking/refcounts: Change WARN() to WARN_ONCE()
This commit is contained in:
@@ -3262,10 +3262,17 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
|
||||
if (depth) {
|
||||
hlock = curr->held_locks + depth - 1;
|
||||
if (hlock->class_idx == class_idx && nest_lock) {
|
||||
if (hlock->references)
|
||||
if (hlock->references) {
|
||||
/*
|
||||
* Check: unsigned int references:12, overflow.
|
||||
*/
|
||||
if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1))
|
||||
return 0;
|
||||
|
||||
hlock->references++;
|
||||
else
|
||||
} else {
|
||||
hlock->references = 2;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@@ -50,7 +50,7 @@ static void test_mutex_work(struct work_struct *work)
|
||||
|
||||
if (mtx->flags & TEST_MTX_TRY) {
|
||||
while (!ww_mutex_trylock(&mtx->mutex))
|
||||
cpu_relax();
|
||||
cond_resched();
|
||||
} else {
|
||||
ww_mutex_lock(&mtx->mutex, NULL);
|
||||
}
|
||||
@@ -88,7 +88,7 @@ static int __test_mutex(unsigned int flags)
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
cpu_relax();
|
||||
cond_resched();
|
||||
} while (time_before(jiffies, timeout));
|
||||
} else {
|
||||
ret = wait_for_completion_timeout(&mtx.done, TIMEOUT);
|
||||
@@ -627,7 +627,7 @@ static int __init test_ww_mutex_init(void)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = stress(4096, hweight32(STRESS_ALL)*ncpus, 1<<12, STRESS_ALL);
|
||||
ret = stress(4095, hweight32(STRESS_ALL)*ncpus, 1<<12, STRESS_ALL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Reference in New Issue
Block a user