On Thu, 2024-10-24 at 21:09 +0900, Hajime Tazaki wrote:
> 
> +static void sigill(int sig, siginfo_t *si, void *ctx_void)
> +{
> +     longjmp(jmpbuf, 1);
> +}

Should this code use sigsetjmp/siglongjmp?

> +int os_has_fsgsbase(void)
> +{
> +     return has_fsgsbase;
> +}

Why should this be a function rather than just exposing the variable?

> +++ b/arch/um/os-Linux/time.c
> @@ -89,7 +89,8 @@ long long os_nsecs(void)
>  {
>       struct timespec ts;
>  
> -     clock_gettime(CLOCK_MONOTONIC,&ts);
> +     clock_gettime(CLOCK_MONOTONIC, &ts);
> +
>       return timespec_to_ns(&ts);

unrelated changes

>  #ifndef CONFIG_MMU
>  
> +static int os_x86_arch_prctl(int pid, int option, unsigned long *arg2)
> +{
> +     if (os_has_fsgsbase()) {
> +             switch (option) {
> +             case ARCH_SET_FS:
> +                     wrfsbase(*arg2);
> +                     break;
> +             case ARCH_SET_GS:
> +                     wrgsbase(*arg2);
> +                     break;
> +             case ARCH_GET_FS:
> +                     *arg2 = rdfsbase();
> +                     break;
> +             case ARCH_GET_GS:
> +                     *arg2 = rdgsbase();
> +                     break;
> +             }
> +             return 0;
> +     } else
> +             return os_arch_prctl(pid, option, arg2);

please use (or don't) {} on all branches


> @@ -39,4 +73,5 @@ __visible void do_syscall_64(struct pt_regs *regs)
>                       current_thread_info()->aux_fp_regs);
>       }
>  }
> +
>  #endif

unrelated

johannes

Reply via email to