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.

Reply via email to