diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dynamic_printk.c | 6 | ||||
| -rw-r--r-- | lib/idr.c | 8 | ||||
| -rw-r--r-- | lib/percpu_counter.c | 7 |
3 files changed, 12 insertions, 9 deletions
diff --git a/lib/dynamic_printk.c b/lib/dynamic_printk.c index d83660fd6fdd..8e30295e8566 100644 --- a/lib/dynamic_printk.c +++ b/lib/dynamic_printk.c | |||
| @@ -135,7 +135,7 @@ int unregister_dynamic_debug_module(char *mod_name) | |||
| 135 | nr_entries--; | 135 | nr_entries--; |
| 136 | out: | 136 | out: |
| 137 | up(&debug_list_mutex); | 137 | up(&debug_list_mutex); |
| 138 | return 0; | 138 | return ret; |
| 139 | } | 139 | } |
| 140 | EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module); | 140 | EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module); |
| 141 | 141 | ||
| @@ -289,7 +289,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf, | |||
| 289 | dynamic_enabled = DYNAMIC_ENABLED_SOME; | 289 | dynamic_enabled = DYNAMIC_ENABLED_SOME; |
| 290 | err = 0; | 290 | err = 0; |
| 291 | printk(KERN_DEBUG | 291 | printk(KERN_DEBUG |
| 292 | "debugging enabled for module %s", | 292 | "debugging enabled for module %s\n", |
| 293 | elem->name); | 293 | elem->name); |
| 294 | } else if (!value && (elem->enable == 1)) { | 294 | } else if (!value && (elem->enable == 1)) { |
| 295 | elem->enable = 0; | 295 | elem->enable = 0; |
| @@ -309,7 +309,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf, | |||
| 309 | err = 0; | 309 | err = 0; |
| 310 | printk(KERN_DEBUG | 310 | printk(KERN_DEBUG |
| 311 | "debugging disabled for module " | 311 | "debugging disabled for module " |
| 312 | "%s", elem->name); | 312 | "%s\n", elem->name); |
| 313 | } | 313 | } |
| 314 | } | 314 | } |
| 315 | } | 315 | } |
| @@ -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 | ||
