xtensa: fix coprocessor part of ptrace_{get,set}xregs
authorMax Filippov <jcmvbkbc@gmail.com>
Tue, 27 Nov 2018 02:06:01 +0000 (18:06 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 27 Nov 2018 02:37:51 +0000 (18:37 -0800)
commit38a35a78c5e270cbe53c4fef6b0d3c2da90dd849
tree558671a432f90f55aa6aaf273041ee6f904caab5
parent03bc996af0cc71c7f30c384d8ce7260172423b34
xtensa: fix coprocessor part of ptrace_{get,set}xregs

Layout of coprocessor registers in the elf_xtregs_t and
xtregs_coprocessor_t may be different due to alignment. Thus it is not
always possible to copy data between the xtregs_coprocessor_t structure
and the elf_xtregs_t and get correct values for all registers.
Use a table of offsets and sizes of individual coprocessor register
groups to do coprocessor context copying in the ptrace_getxregs and
ptrace_setxregs.
This fixes incorrect coprocessor register values reading from the user
process by the native gdb on an xtensa core with multiple coprocessors
and registers with high alignment requirements.

Cc: stable@vger.kernel.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/kernel/ptrace.c