Re: [PATCH] x86: always use SYSCALL_DEFINE*

From: Jann Horn
Date: Tue Mar 13 2018 - 17:16:30 EST


On Sat, Mar 10, 2018 at 12:55 PM, Tautschnig, Michael
<tautschn@xxxxxxxxxxxx> wrote:
> All syscall arguments are passed in as types of the same byte size as
> unsigned long (width of full registers). Using a smaller type without a
> cast may result in losing bits of information. SYSCALL_DEFINE* introduce
> adequate type casts. All definitions of syscalls in x86 except for those
> patched here have already been using the appropriate SYSCALL_DEFINE*.
[...]
> diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c
> index 2f72330..d98b2a3 100644
> --- a/arch/x86/kernel/ioport.c
> +++ b/arch/x86/kernel/ioport.c
> @@ -23,7 +23,8 @@
> /*
> * this changes the io permissions bitmap in the current task.
> */
> -asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
> +SYSCALL_DEFINE3(sys_ioperm, unsigned long, from, unsigned long, num, int,
> + turn_on)

Shouldn't this be "SYSCALL_DEFINE3(ioperm, [...]", without the "sys_"?