• Max Filippov's avatar
    xtensa: use XCHAL_NUM_AREGS as pt_regs::areg size · 5b835d4c
    Max Filippov authored
    struct pt_regs is used to access both kernel and user exception frames.
    User exception frames may contain up to XCHAL_NUM_AREG registers that
    task creation and signal delivery code may access, but pt_regs::areg
    array has only 16 entries that cover only the kernel exception frame.
    This results in the following build error:
    
    arch/xtensa/kernel/process.c: In function 'copy_thread':
    arch/xtensa/kernel/process.c:262:52: error: array subscript 53 is above
               array bounds of 'long unsigned int[16]' [-Werror=array-bounds]
      262 |                                 put_user(regs->areg[caller_ars+1],
    
    Change struct pt_regs::areg size to XCHAL_NUM_AREGS so that it covers
    the whole user exception frame. Adjust task_pt_regs and drop additional
    register copying code from copy_thread now that the whole user exception
    stack frame is copied.
    Reported-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    5b835d4c
ptrace.h 3.23 KB