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:
@@ -58,7 +58,7 @@ bool refcount_add_not_zero(unsigned int i, refcount_t *r)
|
||||
val = old;
|
||||
}
|
||||
|
||||
WARN(new == UINT_MAX, "refcount_t: saturated; leaking memory.\n");
|
||||
WARN_ONCE(new == UINT_MAX, "refcount_t: saturated; leaking memory.\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -66,7 +66,7 @@ EXPORT_SYMBOL_GPL(refcount_add_not_zero);
|
||||
|
||||
void refcount_add(unsigned int i, refcount_t *r)
|
||||
{
|
||||
WARN(!refcount_add_not_zero(i, r), "refcount_t: addition on 0; use-after-free.\n");
|
||||
WARN_ONCE(!refcount_add_not_zero(i, r), "refcount_t: addition on 0; use-after-free.\n");
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(refcount_add);
|
||||
|
||||
@@ -97,7 +97,7 @@ bool refcount_inc_not_zero(refcount_t *r)
|
||||
val = old;
|
||||
}
|
||||
|
||||
WARN(new == UINT_MAX, "refcount_t: saturated; leaking memory.\n");
|
||||
WARN_ONCE(new == UINT_MAX, "refcount_t: saturated; leaking memory.\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -111,7 +111,7 @@ EXPORT_SYMBOL_GPL(refcount_inc_not_zero);
|
||||
*/
|
||||
void refcount_inc(refcount_t *r)
|
||||
{
|
||||
WARN(!refcount_inc_not_zero(r), "refcount_t: increment on 0; use-after-free.\n");
|
||||
WARN_ONCE(!refcount_inc_not_zero(r), "refcount_t: increment on 0; use-after-free.\n");
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(refcount_inc);
|
||||
|
||||
@@ -125,7 +125,7 @@ bool refcount_sub_and_test(unsigned int i, refcount_t *r)
|
||||
|
||||
new = val - i;
|
||||
if (new > val) {
|
||||
WARN(new > val, "refcount_t: underflow; use-after-free.\n");
|
||||
WARN_ONCE(new > val, "refcount_t: underflow; use-after-free.\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ EXPORT_SYMBOL_GPL(refcount_dec_and_test);
|
||||
|
||||
void refcount_dec(refcount_t *r)
|
||||
{
|
||||
WARN(refcount_dec_and_test(r), "refcount_t: decrement hit 0; leaking memory.\n");
|
||||
WARN_ONCE(refcount_dec_and_test(r), "refcount_t: decrement hit 0; leaking memory.\n");
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(refcount_dec);
|
||||
|
||||
@@ -204,7 +204,7 @@ bool refcount_dec_not_one(refcount_t *r)
|
||||
|
||||
new = val - 1;
|
||||
if (new > val) {
|
||||
WARN(new > val, "refcount_t: underflow; use-after-free.\n");
|
||||
WARN_ONCE(new > val, "refcount_t: underflow; use-after-free.\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user