forked from luck/tmp_suning_uos_patched
s390/ftrace: fix potential crashes when switching tracers
Switching tracers include instruction patching. To prevent that a instruction is patched while it's read the instruction patching is done in stop_machine 'context'. This also means that any function called during stop_machine must not be traced. Thus add 'notrace' to all functions called within stop_machine. Fixes:1ec2772e0c
("s390/diag: add a statistic for diagnose calls") Fixes:38f2c691a4
("s390: improve wait logic of stop_machine") Fixes:4ecf0a43e7
("processor: get rid of cpu_relax_yield") Signed-off-by: Philipp Rudo <prudo@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
ae83d0b416
commit
8ebf6da9db
|
@ -133,7 +133,7 @@ void diag_stat_inc(enum diag_stat_enum nr)
|
|||
}
|
||||
EXPORT_SYMBOL(diag_stat_inc);
|
||||
|
||||
void diag_stat_inc_norecursion(enum diag_stat_enum nr)
|
||||
void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr)
|
||||
{
|
||||
this_cpu_inc(diag_stat.counter[nr]);
|
||||
trace_s390_diagnose_norecursion(diag_map[nr].code);
|
||||
|
|
|
@ -403,7 +403,7 @@ int smp_find_processor_id(u16 address)
|
|||
return -1;
|
||||
}
|
||||
|
||||
bool arch_vcpu_is_preempted(int cpu)
|
||||
bool notrace arch_vcpu_is_preempted(int cpu)
|
||||
{
|
||||
if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu))
|
||||
return false;
|
||||
|
@ -413,7 +413,7 @@ bool arch_vcpu_is_preempted(int cpu)
|
|||
}
|
||||
EXPORT_SYMBOL(arch_vcpu_is_preempted);
|
||||
|
||||
void smp_yield_cpu(int cpu)
|
||||
void notrace smp_yield_cpu(int cpu)
|
||||
{
|
||||
if (!MACHINE_HAS_DIAG9C)
|
||||
return;
|
||||
|
|
|
@ -14,7 +14,7 @@ EXPORT_TRACEPOINT_SYMBOL(s390_diagnose);
|
|||
|
||||
static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth);
|
||||
|
||||
void trace_s390_diagnose_norecursion(int diag_nr)
|
||||
void notrace trace_s390_diagnose_norecursion(int diag_nr)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int *depth;
|
||||
|
|
Loading…
Reference in New Issue
Block a user