s390: current_stack_pointer shouldn't be a function
s390 defines current_stack_pointer as function while all other architectures use 'register unsigned long asm("<stackptr reg>"). This make codes like the following from check_stack_object() fail: if (IS_ENABLED(CONFIG_STACK_GROWSUP)) { if ((void *)current_stack_pointer < obj + len) return BAD_STACK; } else { if (obj < (void *)current_stack_pointer) return BAD_STACK; } because this would compare the address of current_stack_pointer() and not the stackpointer value. Reported-by:Karsten Graul <kgraul@linux.ibm.com> Fixes: 2792d84e ("usercopy: Check valid lifetime via stack depth") Cc: Kees Cook <keescook@chromium.org> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by:
Sven Schnelle <svens@linux.ibm.com> Reviewed-by:
Heiko Carstens <hca@linux.ibm.com> Signed-off-by:
Heiko Carstens <hca@linux.ibm.com>
Showing
- arch/s390/include/asm/entry-common.h 1 addition, 1 deletionarch/s390/include/asm/entry-common.h
- arch/s390/include/asm/processor.h 1 addition, 7 deletionsarch/s390/include/asm/processor.h
- arch/s390/include/asm/stacktrace.h 1 addition, 1 deletionarch/s390/include/asm/stacktrace.h
- arch/s390/lib/test_unwind.c 1 addition, 1 deletionarch/s390/lib/test_unwind.c
Please register or sign in to comment