aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-21 20:48:41 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-21 20:48:41 -0500
commit5cb7398caf69e3943df78435a19a8a77fe8b9463 (patch)
tree3b81cdc17dcbcecbd18b722988648b36297288fd
parent4a2829b97654ec773dabc681f232ab11cb347d01 (diff)
parent8a0921712ec6d00754b5d7afea78137772efee0a (diff)
Merge branch 'for-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
Pull percpu changes from Tejun Heo: "Two trivial changes - addition of WARN_ONCE() in lib/percpu-refcount.c and use of VMALLOC_TOTAL instead of END - START in percpu.c" * 'for-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: percpu: use VMALLOC_TOTAL instead of VMALLOC_END - VMALLOC_START percpu-refcount: Add a WARN() for ref going negative
-rw-r--r--lib/percpu-refcount.c3
-rw-r--r--mm/percpu.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
index 1a53d497a8c5..963b7034a51b 100644
--- a/lib/percpu-refcount.c
+++ b/lib/percpu-refcount.c
@@ -120,6 +120,9 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
120 120
121 atomic_add((int) count - PCPU_COUNT_BIAS, &ref->count); 121 atomic_add((int) count - PCPU_COUNT_BIAS, &ref->count);
122 122
123 WARN_ONCE(atomic_read(&ref->count) <= 0, "percpu ref <= 0 (%i)",
124 atomic_read(&ref->count));
125
123 /* @ref is viewed as dead on all CPUs, send out kill confirmation */ 126 /* @ref is viewed as dead on all CPUs, send out kill confirmation */
124 if (ref->confirm_kill) 127 if (ref->confirm_kill)
125 ref->confirm_kill(ref); 128 ref->confirm_kill(ref);
diff --git a/mm/percpu.c b/mm/percpu.c
index 0d10defe951e..afbf352ae580 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -1686,10 +1686,10 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size,
1686 max_distance += ai->unit_size; 1686 max_distance += ai->unit_size;
1687 1687
1688 /* warn if maximum distance is further than 75% of vmalloc space */ 1688 /* warn if maximum distance is further than 75% of vmalloc space */
1689 if (max_distance > (VMALLOC_END - VMALLOC_START) * 3 / 4) { 1689 if (max_distance > VMALLOC_TOTAL * 3 / 4) {
1690 pr_warning("PERCPU: max_distance=0x%zx too large for vmalloc " 1690 pr_warning("PERCPU: max_distance=0x%zx too large for vmalloc "
1691 "space 0x%lx\n", max_distance, 1691 "space 0x%lx\n", max_distance,
1692 (unsigned long)(VMALLOC_END - VMALLOC_START)); 1692 VMALLOC_TOTAL);
1693#ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK 1693#ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK
1694 /* and fail if we have fallback */ 1694 /* and fail if we have fallback */
1695 rc = -EINVAL; 1695 rc = -EINVAL;