• Dave Martin's avatar
    arm64: ptrace: Fix VFP register dumping in compat coredumps · af66b2d8
    Dave Martin authored
    Currently, VFP registers are omitted from coredumps for compat
    processes, due to a bug in the REGSET_COMPAT_VFP regset
    implementation.
    
    compat_vfp_get() needs to transfer non-contiguous data from
    thread_struct.fpsimd_state, and uses put_user() to handle the
    offending trailing word (FPSCR).  This fails when copying to a
    kernel address (i.e., kbuf && !ubuf), which is what happens when
    dumping core.  As a result, the ELF coredump core code silently
    omits the NT_ARM_VFP note from the dump.
    
    It would be possible to work around this with additional special
    case code for the put_user(), but since user_regset_copyout() is
    explicitly designed to handle this scenario it is cleaner to port
    the put_user() to a user_regset_copyout() call, which this patch
    does.
    Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    af66b2d8
ptrace.c 34.3 KB