Patch "um: Cleanup syscall_handler_t definition/cast, fix warning" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    um: Cleanup syscall_handler_t definition/cast, fix warning

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     um-cleanup-syscall_handler_t-definition-cast-fix-war.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4fb219ad8b4ab6baf5a8100a15fb5d1bf8c0bf8b
Author: David Gow <davidgow@xxxxxxxxxx>
Date:   Thu Feb 10 11:43:53 2022 +0800

    um: Cleanup syscall_handler_t definition/cast, fix warning
    
    [ Upstream commit f4f03f299a56ce4d73c5431e0327b3b6cb55ebb9 ]
    
    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: David Gow <davidgow@xxxxxxxxxx>
    Signed-off-by: Richard Weinberger <richard@xxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/x86/um/shared/sysdep/syscalls_64.h b/arch/x86/um/shared/sysdep/syscalls_64.h
index 48d6cd12f8a5..b6b997225841 100644
--- a/arch/x86/um/shared/sysdep/syscalls_64.h
+++ b/arch/x86/um/shared/sysdep/syscalls_64.h
@@ -10,13 +10,12 @@
 #include <linux/msg.h>
 #include <linux/shm.h>
 
-typedef long syscall_handler_t(void);
+typedef long syscall_handler_t(long, long, long, long, long, long);
 
 extern syscall_handler_t *sys_call_table[];
 
 #define EXECUTE_SYSCALL(syscall, regs) \
-	(((long (*)(long, long, long, long, long, long)) \
-	  (*sys_call_table[syscall]))(UPT_SYSCALL_ARG1(&regs->regs), \
+	(((*sys_call_table[syscall]))(UPT_SYSCALL_ARG1(&regs->regs), \
 		 		      UPT_SYSCALL_ARG2(&regs->regs), \
 				      UPT_SYSCALL_ARG3(&regs->regs), \
 				      UPT_SYSCALL_ARG4(&regs->regs), \



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux