diff options
author | David S. Miller <davem@davemloft.net> | 2008-12-15 23:03:50 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-15 23:03:50 -0500 |
commit | eb14f019597cd86c21a6c601d7e900f40030c2e7 (patch) | |
tree | 36fb2f36a1747f98988f87215db1eef3a71d45eb /lib | |
parent | 9a4a84294b0d60b8c287131478f743ba2bc68949 (diff) | |
parent | a3dd15444baa9c7522c8457ab564c41219dfb44c (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/e1000e/ich8lan.c
Diffstat (limited to 'lib')
-rw-r--r-- | lib/idr.c | 8 | ||||
-rw-r--r-- | lib/percpu_counter.c | 7 |
2 files changed, 9 insertions, 6 deletions
@@ -220,8 +220,14 @@ build_up: | |||
220 | */ | 220 | */ |
221 | while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) { | 221 | while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) { |
222 | layers++; | 222 | layers++; |
223 | if (!p->count) | 223 | if (!p->count) { |
224 | /* special case: if the tree is currently empty, | ||
225 | * then we grow the tree by moving the top node | ||
226 | * upwards. | ||
227 | */ | ||
228 | p->layer++; | ||
224 | continue; | 229 | continue; |
230 | } | ||
225 | if (!(new = get_from_free_list(idp))) { | 231 | if (!(new = get_from_free_list(idp))) { |
226 | /* | 232 | /* |
227 | * The allocation failed. If we built part of | 233 | * The allocation failed. If we built part of |
diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index a8663890a88c..b255b939bc1b 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c | |||
@@ -62,10 +62,7 @@ s64 __percpu_counter_sum(struct percpu_counter *fbc) | |||
62 | for_each_online_cpu(cpu) { | 62 | for_each_online_cpu(cpu) { |
63 | s32 *pcount = per_cpu_ptr(fbc->counters, cpu); | 63 | s32 *pcount = per_cpu_ptr(fbc->counters, cpu); |
64 | ret += *pcount; | 64 | ret += *pcount; |
65 | *pcount = 0; | ||
66 | } | 65 | } |
67 | fbc->count = ret; | ||
68 | |||
69 | spin_unlock(&fbc->lock); | 66 | spin_unlock(&fbc->lock); |
70 | return ret; | 67 | return ret; |
71 | } | 68 | } |
@@ -104,13 +101,13 @@ void percpu_counter_destroy(struct percpu_counter *fbc) | |||
104 | if (!fbc->counters) | 101 | if (!fbc->counters) |
105 | return; | 102 | return; |
106 | 103 | ||
107 | free_percpu(fbc->counters); | ||
108 | fbc->counters = NULL; | ||
109 | #ifdef CONFIG_HOTPLUG_CPU | 104 | #ifdef CONFIG_HOTPLUG_CPU |
110 | mutex_lock(&percpu_counters_lock); | 105 | mutex_lock(&percpu_counters_lock); |
111 | list_del(&fbc->list); | 106 | list_del(&fbc->list); |
112 | mutex_unlock(&percpu_counters_lock); | 107 | mutex_unlock(&percpu_counters_lock); |
113 | #endif | 108 | #endif |
109 | free_percpu(fbc->counters); | ||
110 | fbc->counters = NULL; | ||
114 | } | 111 | } |
115 | EXPORT_SYMBOL(percpu_counter_destroy); | 112 | EXPORT_SYMBOL(percpu_counter_destroy); |
116 | 113 | ||