diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/kernel/process.c | 4 | ||||
| -rw-r--r-- | arch/arm/vfp/vfpmodule.c | 4 | ||||
| -rw-r--r-- | arch/avr32/kernel/process.c | 4 | ||||
| -rw-r--r-- | arch/cris/arch-v32/kernel/process.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/process.c | 14 | ||||
| -rw-r--r-- | arch/metag/kernel/process.c | 6 | ||||
| -rw-r--r-- | arch/mn10300/kernel/process.c | 4 | ||||
| -rw-r--r-- | arch/s390/kernel/process.c | 5 | ||||
| -rw-r--r-- | arch/sh/kernel/process_64.c | 5 | ||||
| -rw-r--r-- | arch/sparc/kernel/process_32.c | 12 | ||||
| -rw-r--r-- | arch/sparc/kernel/process_64.c | 4 | ||||
| -rw-r--r-- | arch/tile/kernel/process.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/process.c | 5 | ||||
| -rw-r--r-- | arch/xtensa/kernel/process.c | 4 |
15 files changed, 39 insertions, 44 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 4adfb46e3ee9..a647d6642f3e 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
| @@ -193,9 +193,9 @@ EXPORT_SYMBOL_GPL(thread_notify_head); | |||
| 193 | /* | 193 | /* |
| 194 | * Free current thread data structures etc.. | 194 | * Free current thread data structures etc.. |
| 195 | */ | 195 | */ |
| 196 | void exit_thread(void) | 196 | void exit_thread(struct task_struct *tsk) |
| 197 | { | 197 | { |
| 198 | thread_notify(THREAD_NOTIFY_EXIT, current_thread_info()); | 198 | thread_notify(THREAD_NOTIFY_EXIT, task_thread_info(tsk)); |
| 199 | } | 199 | } |
| 200 | 200 | ||
| 201 | void flush_thread(void) | 201 | void flush_thread(void) |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 2a61e4b04600..73085d3482ed 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
| @@ -156,10 +156,6 @@ static void vfp_thread_copy(struct thread_info *thread) | |||
| 156 | * - we could be preempted if tree preempt rcu is enabled, so | 156 | * - we could be preempted if tree preempt rcu is enabled, so |
| 157 | * it is unsafe to use thread->cpu. | 157 | * it is unsafe to use thread->cpu. |
| 158 | * THREAD_NOTIFY_EXIT | 158 | * THREAD_NOTIFY_EXIT |
| 159 | * - the thread (v) will be running on the local CPU, so | ||
| 160 | * v === current_thread_info() | ||
| 161 | * - thread->cpu is the local CPU number at the time it is accessed, | ||
| 162 | * but may change at any time. | ||
| 163 | * - we could be preempted if tree preempt rcu is enabled, so | 159 | * - we could be preempted if tree preempt rcu is enabled, so |
| 164 | * it is unsafe to use thread->cpu. | 160 | * it is unsafe to use thread->cpu. |
| 165 | */ | 161 | */ |
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index 42a53e740a7e..68e5b9dac059 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c | |||
| @@ -62,9 +62,9 @@ void machine_restart(char *cmd) | |||
| 62 | /* | 62 | /* |
| 63 | * Free current thread data structures etc | 63 | * Free current thread data structures etc |
| 64 | */ | 64 | */ |
| 65 | void exit_thread(void) | 65 | void exit_thread(struct task_struct *tsk) |
| 66 | { | 66 | { |
| 67 | ocd_disable(current); | 67 | ocd_disable(tsk); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | void flush_thread(void) | 70 | void flush_thread(void) |
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c index c7ce784a393c..4d1afa9f9fd3 100644 --- a/arch/cris/arch-v32/kernel/process.c +++ b/arch/cris/arch-v32/kernel/process.c | |||
| @@ -33,9 +33,9 @@ void default_idle(void) | |||
| 33 | */ | 33 | */ |
| 34 | 34 | ||
| 35 | extern void deconfigure_bp(long pid); | 35 | extern void deconfigure_bp(long pid); |
| 36 | void exit_thread(void) | 36 | void exit_thread(struct task_struct *tsk) |
| 37 | { | 37 | { |
| 38 | deconfigure_bp(current->pid); | 38 | deconfigure_bp(tsk->pid); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | /* | 41 | /* |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 9cd607b06964..2436ad5f92c1 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
| @@ -4542,8 +4542,8 @@ pfm_context_unload(pfm_context_t *ctx, void *arg, int count, struct pt_regs *reg | |||
| 4542 | 4542 | ||
| 4543 | 4543 | ||
| 4544 | /* | 4544 | /* |
| 4545 | * called only from exit_thread(): task == current | 4545 | * called only from exit_thread() |
| 4546 | * we come here only if current has a context attached (loaded or masked) | 4546 | * we come here only if the task has a context attached (loaded or masked) |
| 4547 | */ | 4547 | */ |
| 4548 | void | 4548 | void |
| 4549 | pfm_exit_thread(struct task_struct *task) | 4549 | pfm_exit_thread(struct task_struct *task) |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index b51514957620..aae6c4dc7ae7 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
| @@ -570,22 +570,22 @@ flush_thread (void) | |||
| 570 | } | 570 | } |
| 571 | 571 | ||
| 572 | /* | 572 | /* |
| 573 | * Clean up state associated with current thread. This is called when | 573 | * Clean up state associated with a thread. This is called when |
| 574 | * the thread calls exit(). | 574 | * the thread calls exit(). |
| 575 | */ | 575 | */ |
| 576 | void | 576 | void |
| 577 | exit_thread (void) | 577 | exit_thread (struct task_struct *tsk) |
| 578 | { | 578 | { |
| 579 | 579 | ||
| 580 | ia64_drop_fpu(current); | 580 | ia64_drop_fpu(tsk); |
| 581 | #ifdef CONFIG_PERFMON | 581 | #ifdef CONFIG_PERFMON |
| 582 | /* if needed, stop monitoring and flush state to perfmon context */ | 582 | /* if needed, stop monitoring and flush state to perfmon context */ |
| 583 | if (current->thread.pfm_context) | 583 | if (tsk->thread.pfm_context) |
| 584 | pfm_exit_thread(current); | 584 | pfm_exit_thread(tsk); |
| 585 | 585 | ||
| 586 | /* free debug register resources */ | 586 | /* free debug register resources */ |
| 587 | if (current->thread.flags & IA64_THREAD_DBG_VALID) | 587 | if (tsk->thread.flags & IA64_THREAD_DBG_VALID) |
| 588 | pfm_release_debug_registers(current); | 588 | pfm_release_debug_registers(tsk); |
| 589 | #endif | 589 | #endif |
| 590 | } | 590 | } |
| 591 | 591 | ||
diff --git a/arch/metag/kernel/process.c b/arch/metag/kernel/process.c index 7f546183a0f0..35062796edf2 100644 --- a/arch/metag/kernel/process.c +++ b/arch/metag/kernel/process.c | |||
| @@ -345,10 +345,10 @@ void flush_thread(void) | |||
| 345 | /* | 345 | /* |
| 346 | * Free current thread data structures etc. | 346 | * Free current thread data structures etc. |
| 347 | */ | 347 | */ |
| 348 | void exit_thread(void) | 348 | void exit_thread(struct task_struct *tsk) |
| 349 | { | 349 | { |
| 350 | clear_fpu(¤t->thread); | 350 | clear_fpu(&tsk->thread); |
| 351 | clear_dsp(¤t->thread); | 351 | clear_dsp(&tsk->thread); |
| 352 | } | 352 | } |
| 353 | 353 | ||
| 354 | /* TODO: figure out how to unwind the kernel stack here to figure out | 354 | /* TODO: figure out how to unwind the kernel stack here to figure out |
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index 74a96ccf7451..cbede4e88dee 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
| @@ -103,9 +103,9 @@ void show_regs(struct pt_regs *regs) | |||
| 103 | /* | 103 | /* |
| 104 | * free current thread data structures etc.. | 104 | * free current thread data structures etc.. |
| 105 | */ | 105 | */ |
| 106 | void exit_thread(void) | 106 | void exit_thread(struct task_struct *tsk) |
| 107 | { | 107 | { |
| 108 | exit_fpu(current); | 108 | exit_fpu(tsk); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | void flush_thread(void) | 111 | void flush_thread(void) |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 481d7a83efc6..bba4fa74b321 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
| @@ -68,9 +68,10 @@ extern void kernel_thread_starter(void); | |||
| 68 | /* | 68 | /* |
| 69 | * Free current thread data structures etc.. | 69 | * Free current thread data structures etc.. |
| 70 | */ | 70 | */ |
| 71 | void exit_thread(void) | 71 | void exit_thread(struct task_struct *tsk) |
| 72 | { | 72 | { |
| 73 | exit_thread_runtime_instr(); | 73 | if (tsk == current) |
| 74 | exit_thread_runtime_instr(); | ||
| 74 | } | 75 | } |
| 75 | 76 | ||
| 76 | void flush_thread(void) | 77 | void flush_thread(void) |
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index e2062e643341..9d3e9916555d 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
| @@ -288,7 +288,7 @@ void show_regs(struct pt_regs *regs) | |||
| 288 | /* | 288 | /* |
| 289 | * Free current thread data structures etc.. | 289 | * Free current thread data structures etc.. |
| 290 | */ | 290 | */ |
| 291 | void exit_thread(void) | 291 | void exit_thread(struct task_struct *tsk) |
| 292 | { | 292 | { |
| 293 | /* | 293 | /* |
| 294 | * See arch/sparc/kernel/process.c for the precedent for doing | 294 | * See arch/sparc/kernel/process.c for the precedent for doing |
| @@ -307,9 +307,8 @@ void exit_thread(void) | |||
| 307 | * which it would get safely nulled. | 307 | * which it would get safely nulled. |
| 308 | */ | 308 | */ |
| 309 | #ifdef CONFIG_SH_FPU | 309 | #ifdef CONFIG_SH_FPU |
| 310 | if (last_task_used_math == current) { | 310 | if (last_task_used_math == tsk) |
| 311 | last_task_used_math = NULL; | 311 | last_task_used_math = NULL; |
| 312 | } | ||
| 313 | #endif | 312 | #endif |
| 314 | } | 313 | } |
| 315 | 314 | ||
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index c5113c7ce2fd..b7780a5bef11 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c | |||
| @@ -184,21 +184,21 @@ unsigned long thread_saved_pc(struct task_struct *tsk) | |||
| 184 | /* | 184 | /* |
| 185 | * Free current thread data structures etc.. | 185 | * Free current thread data structures etc.. |
| 186 | */ | 186 | */ |
| 187 | void exit_thread(void) | 187 | void exit_thread(struct task_struct *tsk) |
| 188 | { | 188 | { |
| 189 | #ifndef CONFIG_SMP | 189 | #ifndef CONFIG_SMP |
| 190 | if(last_task_used_math == current) { | 190 | if (last_task_used_math == tsk) { |
| 191 | #else | 191 | #else |
| 192 | if (test_thread_flag(TIF_USEDFPU)) { | 192 | if (test_ti_thread_flag(task_thread_info(tsk), TIF_USEDFPU)) { |
| 193 | #endif | 193 | #endif |
| 194 | /* Keep process from leaving FPU in a bogon state. */ | 194 | /* Keep process from leaving FPU in a bogon state. */ |
| 195 | put_psr(get_psr() | PSR_EF); | 195 | put_psr(get_psr() | PSR_EF); |
| 196 | fpsave(¤t->thread.float_regs[0], ¤t->thread.fsr, | 196 | fpsave(&tsk->thread.float_regs[0], &tsk->thread.fsr, |
| 197 | ¤t->thread.fpqueue[0], ¤t->thread.fpqdepth); | 197 | &tsk->thread.fpqueue[0], &tsk->thread.fpqdepth); |
| 198 | #ifndef CONFIG_SMP | 198 | #ifndef CONFIG_SMP |
| 199 | last_task_used_math = NULL; | 199 | last_task_used_math = NULL; |
| 200 | #else | 200 | #else |
| 201 | clear_thread_flag(TIF_USEDFPU); | 201 | clear_ti_thread_flag(task_thread_info(tsk), TIF_USEDFPU); |
| 202 | #endif | 202 | #endif |
| 203 | } | 203 | } |
| 204 | } | 204 | } |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index c16ef1af1843..fa14402b33f9 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
| @@ -417,9 +417,9 @@ unsigned long thread_saved_pc(struct task_struct *tsk) | |||
| 417 | } | 417 | } |
| 418 | 418 | ||
| 419 | /* Free current thread data structures etc.. */ | 419 | /* Free current thread data structures etc.. */ |
| 420 | void exit_thread(void) | 420 | void exit_thread(struct task_struct *tsk) |
| 421 | { | 421 | { |
| 422 | struct thread_info *t = current_thread_info(); | 422 | struct thread_info *t = task_thread_info(tsk); |
| 423 | 423 | ||
| 424 | if (t->utraps) { | 424 | if (t->utraps) { |
| 425 | if (t->utraps[0] < 2) | 425 | if (t->utraps[0] < 2) |
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index b5f30d376ce1..6b705ccc9cc1 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
| @@ -541,7 +541,7 @@ void flush_thread(void) | |||
| 541 | /* | 541 | /* |
| 542 | * Free current thread data structures etc.. | 542 | * Free current thread data structures etc.. |
| 543 | */ | 543 | */ |
| 544 | void exit_thread(void) | 544 | void exit_thread(struct task_struct *tsk) |
| 545 | { | 545 | { |
| 546 | #ifdef CONFIG_HARDWALL | 546 | #ifdef CONFIG_HARDWALL |
| 547 | /* | 547 | /* |
| @@ -550,7 +550,7 @@ void exit_thread(void) | |||
| 550 | * the last reference to a hardwall fd, it would already have | 550 | * the last reference to a hardwall fd, it would already have |
| 551 | * been released and deactivated at this point.) | 551 | * been released and deactivated at this point.) |
| 552 | */ | 552 | */ |
| 553 | hardwall_deactivate_all(current); | 553 | hardwall_deactivate_all(tsk); |
| 554 | #endif | 554 | #endif |
| 555 | } | 555 | } |
| 556 | 556 | ||
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 2915d54e9dd5..96becbbb52e0 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
| @@ -97,10 +97,9 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) | |||
| 97 | /* | 97 | /* |
| 98 | * Free current thread data structures etc.. | 98 | * Free current thread data structures etc.. |
| 99 | */ | 99 | */ |
| 100 | void exit_thread(void) | 100 | void exit_thread(struct task_struct *tsk) |
| 101 | { | 101 | { |
| 102 | struct task_struct *me = current; | 102 | struct thread_struct *t = &tsk->thread; |
| 103 | struct thread_struct *t = &me->thread; | ||
| 104 | unsigned long *bp = t->io_bitmap_ptr; | 103 | unsigned long *bp = t->io_bitmap_ptr; |
| 105 | struct fpu *fpu = &t->fpu; | 104 | struct fpu *fpu = &t->fpu; |
| 106 | 105 | ||
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 5bbfed81c97b..e0ded48561db 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
| @@ -115,10 +115,10 @@ void arch_cpu_idle(void) | |||
| 115 | /* | 115 | /* |
| 116 | * This is called when the thread calls exit(). | 116 | * This is called when the thread calls exit(). |
| 117 | */ | 117 | */ |
| 118 | void exit_thread(void) | 118 | void exit_thread(struct task_struct *tsk) |
| 119 | { | 119 | { |
| 120 | #if XTENSA_HAVE_COPROCESSORS | 120 | #if XTENSA_HAVE_COPROCESSORS |
| 121 | coprocessor_release_all(current_thread_info()); | 121 | coprocessor_release_all(task_thread_info(tsk)); |
| 122 | #endif | 122 | #endif |
| 123 | } | 123 | } |
| 124 | 124 | ||
