diff options
-rw-r--r-- | arch/x86/include/asm/ds.h | 9 | ||||
-rw-r--r-- | arch/x86/include/asm/processor.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/ds.c | 10 | ||||
-rw-r--r-- | arch/x86/kernel/process.c | 5 | ||||
-rw-r--r-- | arch/x86/kernel/process_32.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/process_64.c | 3 |
6 files changed, 8 insertions, 26 deletions
diff --git a/arch/x86/include/asm/ds.h b/arch/x86/include/asm/ds.h index 413e127e567d..149e5208e967 100644 --- a/arch/x86/include/asm/ds.h +++ b/arch/x86/include/asm/ds.h | |||
@@ -285,21 +285,12 @@ extern void __cpuinit ds_init_intel(struct cpuinfo_x86 *); | |||
285 | */ | 285 | */ |
286 | extern void ds_switch_to(struct task_struct *prev, struct task_struct *next); | 286 | extern void ds_switch_to(struct task_struct *prev, struct task_struct *next); |
287 | 287 | ||
288 | /* | ||
289 | * Task clone/init and cleanup work | ||
290 | */ | ||
291 | extern void ds_copy_thread(struct task_struct *tsk, struct task_struct *father); | ||
292 | extern void ds_exit_thread(struct task_struct *tsk); | ||
293 | |||
294 | #else /* CONFIG_X86_DS */ | 288 | #else /* CONFIG_X86_DS */ |
295 | 289 | ||
296 | struct cpuinfo_x86; | 290 | struct cpuinfo_x86; |
297 | static inline void __cpuinit ds_init_intel(struct cpuinfo_x86 *ignored) {} | 291 | static inline void __cpuinit ds_init_intel(struct cpuinfo_x86 *ignored) {} |
298 | static inline void ds_switch_to(struct task_struct *prev, | 292 | static inline void ds_switch_to(struct task_struct *prev, |
299 | struct task_struct *next) {} | 293 | struct task_struct *next) {} |
300 | static inline void ds_copy_thread(struct task_struct *tsk, | ||
301 | struct task_struct *father) {} | ||
302 | static inline void ds_exit_thread(struct task_struct *tsk) {} | ||
303 | 294 | ||
304 | #endif /* CONFIG_X86_DS */ | 295 | #endif /* CONFIG_X86_DS */ |
305 | #endif /* _ASM_X86_DS_H */ | 296 | #endif /* _ASM_X86_DS_H */ |
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 1efeb497f1f9..7c39de7e709a 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h | |||
@@ -454,10 +454,8 @@ struct thread_struct { | |||
454 | unsigned io_bitmap_max; | 454 | unsigned io_bitmap_max; |
455 | /* MSR_IA32_DEBUGCTLMSR value to switch in if TIF_DEBUGCTLMSR is set. */ | 455 | /* MSR_IA32_DEBUGCTLMSR value to switch in if TIF_DEBUGCTLMSR is set. */ |
456 | unsigned long debugctlmsr; | 456 | unsigned long debugctlmsr; |
457 | #ifdef CONFIG_X86_DS | 457 | /* Debug Store context; see asm/ds.h */ |
458 | /* Debug Store context; see include/asm-x86/ds.h; goes into MSR_IA32_DS_AREA */ | ||
459 | struct ds_context *ds_ctx; | 458 | struct ds_context *ds_ctx; |
460 | #endif /* CONFIG_X86_DS */ | ||
461 | }; | 459 | }; |
462 | 460 | ||
463 | static inline unsigned long native_get_debugreg(int regno) | 461 | static inline unsigned long native_get_debugreg(int regno) |
diff --git a/arch/x86/kernel/ds.c b/arch/x86/kernel/ds.c index 21a3852abf68..71cab3b62dce 100644 --- a/arch/x86/kernel/ds.c +++ b/arch/x86/kernel/ds.c | |||
@@ -1352,16 +1352,6 @@ void ds_switch_to(struct task_struct *prev, struct task_struct *next) | |||
1352 | update_debugctlmsr(debugctlmsr); | 1352 | update_debugctlmsr(debugctlmsr); |
1353 | } | 1353 | } |
1354 | 1354 | ||
1355 | void ds_copy_thread(struct task_struct *tsk, struct task_struct *father) | ||
1356 | { | ||
1357 | clear_tsk_thread_flag(tsk, TIF_DS_AREA_MSR); | ||
1358 | tsk->thread.ds_ctx = NULL; | ||
1359 | } | ||
1360 | |||
1361 | void ds_exit_thread(struct task_struct *tsk) | ||
1362 | { | ||
1363 | } | ||
1364 | |||
1365 | static __init int ds_selftest(void) | 1355 | static __init int ds_selftest(void) |
1366 | { | 1356 | { |
1367 | if (ds_cfg.sizeof_rec[ds_bts]) { | 1357 | if (ds_cfg.sizeof_rec[ds_bts]) { |
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index ca989158e847..fb5dfb891f0f 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/idle.h> | 14 | #include <asm/idle.h> |
15 | #include <asm/uaccess.h> | 15 | #include <asm/uaccess.h> |
16 | #include <asm/i387.h> | 16 | #include <asm/i387.h> |
17 | #include <asm/ds.h> | ||
17 | 18 | ||
18 | unsigned long idle_halt; | 19 | unsigned long idle_halt; |
19 | EXPORT_SYMBOL(idle_halt); | 20 | EXPORT_SYMBOL(idle_halt); |
@@ -45,6 +46,8 @@ void free_thread_xstate(struct task_struct *tsk) | |||
45 | kmem_cache_free(task_xstate_cachep, tsk->thread.xstate); | 46 | kmem_cache_free(task_xstate_cachep, tsk->thread.xstate); |
46 | tsk->thread.xstate = NULL; | 47 | tsk->thread.xstate = NULL; |
47 | } | 48 | } |
49 | |||
50 | WARN(tsk->thread.ds_ctx, "leaking DS context\n"); | ||
48 | } | 51 | } |
49 | 52 | ||
50 | void free_thread_info(struct thread_info *ti) | 53 | void free_thread_info(struct thread_info *ti) |
@@ -83,8 +86,6 @@ void exit_thread(void) | |||
83 | put_cpu(); | 86 | put_cpu(); |
84 | kfree(bp); | 87 | kfree(bp); |
85 | } | 88 | } |
86 | |||
87 | ds_exit_thread(current); | ||
88 | } | 89 | } |
89 | 90 | ||
90 | void flush_thread(void) | 91 | void flush_thread(void) |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 76f8f84043a2..b5e4bfef4472 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -290,7 +290,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
290 | p->thread.io_bitmap_max = 0; | 290 | p->thread.io_bitmap_max = 0; |
291 | } | 291 | } |
292 | 292 | ||
293 | ds_copy_thread(p, current); | 293 | clear_tsk_thread_flag(p, TIF_DS_AREA_MSR); |
294 | p->thread.ds_ctx = NULL; | ||
294 | 295 | ||
295 | clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR); | 296 | clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR); |
296 | p->thread.debugctlmsr = 0; | 297 | p->thread.debugctlmsr = 0; |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index b751a41392b1..5a1a1de292ec 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -335,7 +335,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
335 | goto out; | 335 | goto out; |
336 | } | 336 | } |
337 | 337 | ||
338 | ds_copy_thread(p, me); | 338 | clear_tsk_thread_flag(p, TIF_DS_AREA_MSR); |
339 | p->thread.ds_ctx = NULL; | ||
339 | 340 | ||
340 | clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR); | 341 | clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR); |
341 | p->thread.debugctlmsr = 0; | 342 | p->thread.debugctlmsr = 0; |