git: 953a7d7c61f3 - main - Arch64: Clear VFP state on execve()

John Baldwin jhb at FreeBSD.org
Wed Mar 10 17:29:53 UTC 2021


On 3/10/21 4:45 AM, Alex Richardson wrote:
> The branch main has been updated by arichardson:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=953a7d7c61f3b2f5351dfe668510ec782ae282e8
> 
> commit 953a7d7c61f3b2f5351dfe668510ec782ae282e8
> Author:     Alex Richardson <arichardson at FreeBSD.org>
> AuthorDate: 2021-03-09 19:11:40 +0000
> Commit:     Alex Richardson <arichardson at FreeBSD.org>
> CommitDate: 2021-03-10 12:44:42 +0000
> 
>      Arch64: Clear VFP state on execve()
>      
>      I noticed that many of the math-related tests were failing on AArch64.
>      After a lot of debugging, I noticed that the floating point exception flags
>      were not being reset when starting a new process. This change resets the
>      VFP inside exec_setregs() to ensure no VFP register state is leaked from
>      parent processes to children.
>      
>      This commit also moves the clearing of fpcr that was added in 65618fdda0f27
>      from fork() to execve() since that makes more sense: fork() can retain
>      current register values, but execve() should result in a well-defined
>      clean state.
>      
>      Reviewed By:    andrew
>      MFC after:      1 week
>      Differential Revision: https://reviews.freebsd.org/D29060

FYI, cpu_thread_copy() should copy the creating thread's state to the new thread,
not reset it.  POSIX actually says that new threads inherit the "floating point
environment" from the creating thread for pthread_create().  I have a patch I'm
testing to fix thix for x86.

-- 
John Baldwin


More information about the dev-commits-src-all mailing list