diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:48:41 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:48:41 -0500 |
| commit | 5cb7398caf69e3943df78435a19a8a77fe8b9463 (patch) | |
| tree | 3b81cdc17dcbcecbd18b722988648b36297288fd | |
| parent | 4a2829b97654ec773dabc681f232ab11cb347d01 (diff) | |
| parent | 8a0921712ec6d00754b5d7afea78137772efee0a (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.c | 3 | ||||
| -rw-r--r-- | mm/percpu.c | 4 |
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; |
