From: Heiko Carstens Date: Mon, 5 Jul 2021 15:53:42 +0000 (+0200) Subject: s390: add type checking to CALL_ON_STACK_NORETURN() macro X-Git-Tag: v6.6-pxa1908~6116^2~3 X-Git-Url: https://git.dujemihanovic.xyz/?a=commitdiff_plain;h=a9b660849ffa70aaef868d0bc54e325919fe1281;p=linux.git s390: add type checking to CALL_ON_STACK_NORETURN() macro Make sure the to be called function takes no arguments (and returns void). Otherwise usage of CALL_ON_STACK_NORETURN() would generate broken code. Reviewed-by: Sven Schnelle Signed-off-by: Heiko Carstens Signed-off-by: Vasily Gorbik --- diff --git a/arch/s390/include/asm/stacktrace.h b/arch/s390/include/asm/stacktrace.h index 1dc9e814b756..4d4d5dfac24b 100644 --- a/arch/s390/include/asm/stacktrace.h +++ b/arch/s390/include/asm/stacktrace.h @@ -191,12 +191,14 @@ struct stack_frame { #define CALL_ON_STACK_NORETURN(fn, stack) \ ({ \ + void (*__fn)(void) = fn; \ + \ asm volatile( \ " la 15,0(%[_stack])\n" \ " xc %[_bc](8,15),%[_bc](15)\n" \ " brasl 14,%[_fn]\n" \ ::[_bc] "i" (offsetof(struct stack_frame, back_chain)), \ - [_stack] "a" (stack), [_fn] "X" (fn)); \ + [_stack] "a" (stack), [_fn] "X" (__fn)); \ BUG(); \ })