From: Martin Schwidefsky Date: Fri, 25 Nov 2016 08:53:42 +0000 (+0100) Subject: s390: fix kernel oops for CONFIG_MARCH_Z900=y builds X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=61aaef51cc98314b4c9a87f0b27c0493ce111867;p=linux-beck.git s390: fix kernel oops for CONFIG_MARCH_Z900=y builds The LAST_BREAK macro in entry.S uses a different instruction sequence for CONFIG_MARCH_Z900 builds. The branch target offset to skip the store of the last breaking event address needs to take the different length of the code block into account. Fixes: f8fc82b47149e344 ("s390: move sys_call_table and last_break from thread_info to thread_struct") Reported-by: Guenter Roeck Signed-off-by: Martin Schwidefsky --- diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 9e0291ad11a7..161f4e66f67d 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S @@ -123,10 +123,11 @@ _PIF_WORK = (_PIF_PER_TRAP) .macro LAST_BREAK scratch srag \scratch,%r10,23 - jz .+10 #ifdef CONFIG_HAVE_MARCH_Z990_FEATURES + jz .+10 stg %r10,__TASK_thread+__THREAD_last_break(%r12) #else + jz .+14 lghi \scratch,__TASK_thread stg %r10,__THREAD_last_break(\scratch,%r12) #endif