indirect: use asmlinkage in i386 syscall table prototype call_indirect() was using the wrong calling convention for the system call handlers. system call handlers would get mixed up arguments. Jens Axboe reports that modern gcc appreciates this asmlinkage location instead of having it before 'long', as previous syscall function typedefs have used. Signed-off-by: Zach Brown --- include/asm-x86/indirect_32.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/asm-x86/indirect_32.h b/include/asm-x86/indirect_32.h index a1b72ac..49cc5b3 100644 --- a/include/asm-x86/indirect_32.h +++ b/include/asm-x86/indirect_32.h @@ -15,8 +15,8 @@ struct indirect_registers { static inline long call_indirect(struct indirect_registers *regs) { - extern long (*sys_call_table[]) (__u32, __u32, __u32, __u32, __u32, __u32); - + extern long (asmlinkage *sys_call_table[])(long, long, long, + long, long, long); return sys_call_table[INDIRECT_SYSCALL(regs)](regs->ebx, regs->ecx, regs->edx, regs->esi, regs->edi, regs->ebp);