HomeFreeBSD

Fix the location of td->td_frame at the top of the kernel stack.

Description

Fix the location of td->td_frame at the top of the kernel stack.

In cpu_thread_alloc we would allocate space for the trap frame at the top of
the kernel stack. This is just below the pcb, however due to a missing cast
the pointer arithmetic would use the pcb size, not the trapframe size. As
the pcb is larger than the trapframe this is safe, however later in cpu_fork
we include the case leading to the two disagreeing on the location.

Fix by using the same arithmetic in both locations.

Found by: An early KASAN patch
Sponsored by: DARPA, AFRL

Details

Provenance
andrewAuthored on
Parents
rS342936: Import DTS from Linux 4.20
Branches
Unknown
Tags
Unknown