x86, bts: fix race when bts tracer is removed
When the bts tracer is removed while the traced task is running,
the write to clear the bts tracer pointer races with context switch code.
Read the tracer once during a context switch.
When a new tracer is installed, the bts tracer is set in the ds context
before the tracer is initialized in order to claim the context for that
tracer.
This may result in write accesses using an uninitialized trace configuration
when scheduling timestamps have been requested.
Store active tracing flags separately and only set active flags after
the tracing configuration has been initialized.
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Cc: roland@redhat.com
Cc: eranian@googlemail.com
Cc: juan.villacis@intel.com
Cc: ak@linux.jf.intel.com
LKML-Reference: <
20090403144548.
881338000@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>