diff options
Diffstat (limited to 'drivers/oprofile/buffer_sync.c')
-rw-r--r-- | drivers/oprofile/buffer_sync.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index 9da5a4b8113..8574622e36a 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | static LIST_HEAD(dying_tasks); | 39 | static LIST_HEAD(dying_tasks); |
40 | static LIST_HEAD(dead_tasks); | 40 | static LIST_HEAD(dead_tasks); |
41 | static cpumask_t marked_cpus = CPU_MASK_NONE; | 41 | static cpumask_var_t marked_cpus; |
42 | static DEFINE_SPINLOCK(task_mortuary); | 42 | static DEFINE_SPINLOCK(task_mortuary); |
43 | static void process_task_mortuary(void); | 43 | static void process_task_mortuary(void); |
44 | 44 | ||
@@ -154,6 +154,10 @@ int sync_start(void) | |||
154 | { | 154 | { |
155 | int err; | 155 | int err; |
156 | 156 | ||
157 | if (!alloc_cpumask_var(&marked_cpus, GFP_KERNEL)) | ||
158 | return -ENOMEM; | ||
159 | cpumask_clear(marked_cpus); | ||
160 | |||
157 | start_cpu_work(); | 161 | start_cpu_work(); |
158 | 162 | ||
159 | err = task_handoff_register(&task_free_nb); | 163 | err = task_handoff_register(&task_free_nb); |
@@ -179,6 +183,7 @@ out2: | |||
179 | task_handoff_unregister(&task_free_nb); | 183 | task_handoff_unregister(&task_free_nb); |
180 | out1: | 184 | out1: |
181 | end_sync(); | 185 | end_sync(); |
186 | free_cpumask_var(marked_cpus); | ||
182 | goto out; | 187 | goto out; |
183 | } | 188 | } |
184 | 189 | ||
@@ -190,6 +195,7 @@ void sync_stop(void) | |||
190 | profile_event_unregister(PROFILE_TASK_EXIT, &task_exit_nb); | 195 | profile_event_unregister(PROFILE_TASK_EXIT, &task_exit_nb); |
191 | task_handoff_unregister(&task_free_nb); | 196 | task_handoff_unregister(&task_free_nb); |
192 | end_sync(); | 197 | end_sync(); |
198 | free_cpumask_var(marked_cpus); | ||
193 | } | 199 | } |
194 | 200 | ||
195 | 201 | ||
@@ -456,10 +462,10 @@ static void mark_done(int cpu) | |||
456 | { | 462 | { |
457 | int i; | 463 | int i; |
458 | 464 | ||
459 | cpu_set(cpu, marked_cpus); | 465 | cpumask_set_cpu(cpu, marked_cpus); |
460 | 466 | ||
461 | for_each_online_cpu(i) { | 467 | for_each_online_cpu(i) { |
462 | if (!cpu_isset(i, marked_cpus)) | 468 | if (!cpumask_test_cpu(i, marked_cpus)) |
463 | return; | 469 | return; |
464 | } | 470 | } |
465 | 471 | ||
@@ -468,7 +474,7 @@ static void mark_done(int cpu) | |||
468 | */ | 474 | */ |
469 | process_task_mortuary(); | 475 | process_task_mortuary(); |
470 | 476 | ||
471 | cpus_clear(marked_cpus); | 477 | cpumask_clear(marked_cpus); |
472 | } | 478 | } |
473 | 479 | ||
474 | 480 | ||