]> git.baikalelectronics.ru Git - kernel.git/commit
ARCv2: save ABI registers across signal handling
authorVineet Gupta <vgupta@synopsys.com>
Wed, 9 Jun 2021 02:39:25 +0000 (19:39 -0700)
committerVineet Gupta <vgupta@synopsys.com>
Fri, 11 Jun 2021 00:21:38 +0000 (17:21 -0700)
commit8d250f4063d8b3d5f6c492d2c74b2c9175864522
treefe7f0aac7c9ba9661be62c47d20ecba421f90b0b
parent87d9f8b77b5545016adf3cfc494e6ea6899acca7
ARCv2: save ABI registers across signal handling

ARCv2 has some configuration dependent registers (r30, r58, r59) which
could be targetted by the compiler. To keep the ABI stable, these were
unconditionally part of the glibc ABI
(sysdeps/unix/sysv/linux/arc/sys/ucontext.h:mcontext_t) however we
missed populating them (by saving/restoring them across signal
handling).

This patch fixes the issue by
 - adding arcv2 ABI regs to kernel struct sigcontext
 - populating them during signal handling

Change to struct sigcontext might seem like a glibc ABI change (although
it primarily uses ucontext_t:mcontext_t) but the fact is
 - it has only been extended (existing fields are not touched)
 - the old sigcontext was ABI incomplete to begin with anyways

Fixes: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/53
Cc: <stable@vger.kernel.org>
Tested-by: kernel test robot <lkp@intel.com>
Reported-by: Vladimir Isaev <isaev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/include/uapi/asm/sigcontext.h
arch/arc/kernel/signal.c