diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2009-04-03 10:43:46 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-07 07:36:28 -0400 |
commit | 2311f0de21c17b2a8b960677a9cccfbfa52beb35 (patch) | |
tree | bd1f12da337e4f88675f43e71fe6e06016fbc76c /arch/x86/kernel/process.c | |
parent | 3a68eef945b234f286406d96dc690fe17863c203 (diff) |
x86, ds: add leakage warning
Add a warning in case a debug store context is not removed before
the task it is attached to is freed.
Remove the old warning at thread exit. It is too early.
Declare the debug store context field in thread_struct unconditionally.
Remove ds_copy_thread() and ds_exit_thread() and do the work directly
in process*.c.
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Cc: roland@redhat.com
Cc: eranian@googlemail.com
Cc: oleg@redhat.com
Cc: juan.villacis@intel.com
Cc: ak@linux.jf.intel.com
LKML-Reference: <20090403144601.254472000@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r-- | arch/x86/kernel/process.c | 5 |
1 files changed, 3 insertions, 2 deletions
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) |