On Fri, Sep 04, 2020 at 04:31:43PM -0400, Gabriel Krisman Bertazi wrote: > +int set_syscall_user_dispatch(int mode, unsigned long dispatcher_start, > + unsigned long dispatcher_end, char __user *selector) > +{ > + switch (mode) { > + case PR_SYS_DISPATCH_OFF: ... > + case PR_SYS_DISPATCH_ON: ... > + default: > + return -EINVAL; ... > + case PR_SET_SYSCALL_USER_DISPATCH: > + error = set_syscall_user_dispatch((int) arg2, arg3, arg4, > + (char __user *) arg5); This makes aliases of DISPATCH_OFF and DISPATCH_ON every 4GB throughout the 64-bit space of arg2. I don't think that was intentional (nor desirable). I'd suggest just making 'mode' a long and dropping the cast.