parisc: unwind: Avoid missing prototype warning for handle_interruption()
authorHelge Deller <deller@gmx.de>
Mon, 3 Jul 2023 16:23:39 +0000 (18:23 +0200)
committerHelge Deller <deller@gmx.de>
Mon, 3 Jul 2023 16:56:03 +0000 (18:56 +0200)
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/include/asm/processor.h
arch/parisc/kernel/unwind.c

index a2c8776..e132b28 100644 (file)
@@ -296,6 +296,7 @@ extern void do_cpu_irq_mask(struct pt_regs *);
 extern irqreturn_t timer_interrupt(int, void *);
 extern irqreturn_t ipi_interrupt(int, void *);
 extern void start_cpu_itimer(void);
+extern void handle_interruption(int, struct pt_regs *);
 
 /* called from assembly code: */
 extern void start_parisc(void);
index 043184c..27ae40a 100644 (file)
@@ -221,7 +221,6 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
         * Note: We could use dereference_kernel_function_descriptor()
         * instead but we want to keep it simple here.
         */
-       extern void * const handle_interruption;
        extern void * const ret_from_kernel_thread;
        extern void * const syscall_exit;
        extern void * const intr_return;
@@ -229,8 +228,10 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
 #ifdef CONFIG_IRQSTACKS
        extern void * const _call_on_stack;
 #endif /* CONFIG_IRQSTACKS */
+       void *ptr;
 
-       if (pc_is_kernel_fn(pc, handle_interruption)) {
+       ptr = dereference_kernel_function_descriptor(&handle_interruption);
+       if (pc_is_kernel_fn(pc, ptr)) {
                struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN);
                dbg("Unwinding through handle_interruption()\n");
                info->prev_sp = regs->gr[30];