aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/entry.S
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2018-02-22 13:42:29 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-02-22 14:08:51 +0100
commitd5feec04fe578c8dbd9e2e1439afc2f0af761ed4 (patch)
tree08b4ea1c0b3c9c7857774eb7534fa058629295c1 /arch/s390/kernel/entry.S
parents390/cio: clear timer when terminating driver I/O (diff)
downloadlinux-dev-d5feec04fe578c8dbd9e2e1439afc2f0af761ed4.tar.xz
linux-dev-d5feec04fe578c8dbd9e2e1439afc2f0af761ed4.zip
s390: do not bypass BPENTER for interrupt system calls
The system call path can be interrupted before the switch back to the standard branch prediction with BPENTER has been done. The critical section cleanup code skips forward to .Lsysc_do_svc and bypasses the BPENTER. In this case the kernel and all subsequent code will run with the limited branch prediction. Fixes: eacf67eb9b32 ("s390: run user space and KVM guests with modified branch prediction") Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to '')
-rw-r--r--arch/s390/kernel/entry.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 9ec728fa832c..73492461c454 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -1440,6 +1440,7 @@ cleanup_critical:
stg %r15,__LC_SYSTEM_TIMER
0: # update accounting time stamp
mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER
+ BPENTER __TI_flags(%r12),_TIF_ISOLATE_BP
# set up saved register r11
lg %r15,__LC_KERNEL_STACK
la %r9,STACK_FRAME_OVERHEAD(%r15)