summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorHeiko Carstens2015-02-28 11:35:26 +0100
committerMartin Schwidefsky2015-03-02 20:35:53 +0100
commita9ca8eb7afb4f1c90d8e43092e94c4e86785efbc (patch)
tree0e728829761cb824e4e470e1429d7144027a4c6c /fs
parents390/pci: unify pci_iomap symbol exports (diff)
downloadkernel-qcow2-linux-a9ca8eb7afb4f1c90d8e43092e94c4e86785efbc.tar.gz
kernel-qcow2-linux-a9ca8eb7afb4f1c90d8e43092e94c4e86785efbc.tar.xz
kernel-qcow2-linux-a9ca8eb7afb4f1c90d8e43092e94c4e86785efbc.zip
s390/ftrace: fix crashes when switching tracers / add notrace to cpu_relax()
With git commit 4d92f50249eb ("s390: reintroduce diag 44 calls for cpu_relax()") I reintroduced a non-trivial cpu_relax() variant on s390. The difference to the previous variant however is that the new version is an out-of-line function, which will be traced if function tracing is enabled. Switching to different tracers includes instruction patching. Therefore this is done within stop_machine() "context" to prevent that any function tracing is going on while instructions are being patched. With the new out-of-line variant of cpu_relax() this is not true anymore, since cpu_relax() gets called in a busy loop by all waiting cpus within stop_machine() until function patching is finished. Therefore cpu_relax() must be marked notrace. This fixes kernel crashes when frequently switching between "function" and "function_graph" tracers. Moving cpu_relax() to a header file again, doesn't work because of header include order dependencies. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions