• D
    um: Cleanup syscall_handler_t definition/cast, fix warning · ecbd31ec
    David Gow 提交于
    stable inclusion
    from stable-v5.10.118
    commit ea6a86886caa1ec659dd08b38ca879bacde47123
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I5L686
    
    Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ea6a86886caa1ec659dd08b38ca879bacde47123
    
    --------------------------------
    
    [ Upstream commit f4f03f29 ]
    
    The syscall_handler_t type for x86_64 was defined as 'long (*)(void)',
    but always cast to 'long (*)(long, long, long, long, long, long)' before
    use. This now triggers a warning (see below).
    
    Define syscall_handler_t as the latter instead, and remove the cast.
    This simplifies the code, and fixes the warning.
    
    Warning:
    In file included from ../arch/um/include/asm/processor-generic.h:13
                     from ../arch/x86/um/asm/processor.h:41
                     from ../include/linux/rcupdate.h:30
                     from ../include/linux/rculist.h:11
                     from ../include/linux/pid.h:5
                     from ../include/linux/sched.h:14
                     from ../include/linux/ptrace.h:6
                     from ../arch/um/kernel/skas/syscall.c:7:
    ../arch/um/kernel/skas/syscall.c: In function ‘handle_syscall’:
    ../arch/x86/um/shared/sysdep/syscalls_64.h:18:11: warning: cast between incompatible function types from ‘long int (*)(void)’ to ‘long int (*)(long int,  long int,  long int,  long int,  long int,  long int)’ [
    -Wcast-function-type]
       18 |         (((long (*)(long, long, long, long, long, long)) \
          |           ^
    ../arch/x86/um/asm/ptrace.h:36:62: note: in definition of macro ‘PT_REGS_SET_SYSCALL_RETURN’
       36 | #define PT_REGS_SET_SYSCALL_RETURN(r, res) (PT_REGS_AX(r) = (res))
          |                                                              ^~~
    ../arch/um/kernel/skas/syscall.c:46:33: note: in expansion of macro ‘EXECUTE_SYSCALL’
       46 |                                 EXECUTE_SYSCALL(syscall, regs));
          |                                 ^~~~~~~~~~~~~~~
    Signed-off-by: NDavid Gow <davidgow@google.com>
    Signed-off-by: NRichard Weinberger <richard@nod.at>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
    Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
    ecbd31ec
syscalls_64.h 873 字节