• Guenter Roeck's avatar
    parisc: Fix stack unwinder · 882a2a72
    Guenter Roeck authored
    Debugging shows a large number of unaligned access traps in the unwinder
    code. Code analysis reveals a number of issues with this code:
    
    - handle_interruption is passed twice through
      dereference_kernel_function_descriptor()
    - ret_from_kernel_thread, syscall_exit, intr_return,
      _switch_to_ret, and _call_on_stack are passed through
      dereference_kernel_function_descriptor() even though they are
      not declared as function pointers.
    
    To fix the problems, drop one of the calls to
    dereference_kernel_function_descriptor() for handle_interruption,
    and compare the other pointers directly.
    
    Fixes: 6414b30b ("parisc: unwind: Avoid missing prototype warning for handle_interruption()")
    Fixes: 8e0ba125 ("parisc/unwind: fix unwinder when CONFIG_64BIT is enabled")
    Cc: Helge Deller <deller@gmx.de>
    Cc: Sven Schnelle <svens@stackframe.org>
    Cc: John David Anglin <dave.anglin@bell.net>
    Cc: Charlie Jenkins <charlie@rivosinc.com>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    882a2a72
unwind.c 12.4 KB