linux/arch
Dave Martin ce184a0dee ARM: 8687/1: signal: Fix unparseable iwmmxt_sigframe in uc_regspace[]
In kernels with CONFIG_IWMMXT=y running on non-iWMMXt hardware, the
signal frame can be left partially uninitialised in such a way
that userspace cannot parse uc_regspace[] safely.  In particular,
this means that the VFP registers cannot be located reliably in the
signal frame when a multi_v7_defconfig kernel is run on the
majority of platforms.

The cause is that the uc_regspace[] is laid out statically based on
the kernel config, but the decision of whether to save/restore the
iWMMXt registers must be a runtime decision.

To minimise breakage of software that may assume a fixed layout,
this patch emits a dummy block of the same size as iwmmxt_sigframe,
for non-iWMMXt threads.  However, the magic and size of this block
are now filled in to help parsers skip over it.  A new DUMMY_MAGIC
is defined for this purpose.

It is probably legitimate (if non-portable) for userspace to
manufacture its own sigframe for sigreturn, and there is no obvious
reason why userspace should be required to insert a DUMMY_MAGIC
block when running on non-iWMMXt hardware, when omitting it has
worked just fine forever in other configurations.  So in this case,
sigreturn does not require this block to be present.

Reported-by: Edmund Grimley-Evans <Edmund.Grimley-Evans@arm.com>
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2017-07-24 14:26:55 +01:00
..
alpha osf_wait4(): fix infoleak 2017-05-21 13:10:07 -04:00
arc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
arm ARM: 8687/1: signal: Fix unparseable iwmmxt_sigframe in uc_regspace[] 2017-07-24 14:26:55 +01:00
arm64 arm64/vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW 2017-06-20 10:41:51 +02:00
blackfin arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
c6x arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
cris arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
frv arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
h8300 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
hexagon arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
ia64 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
m32r arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
m68k arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
metag devicetree: Move include prefixes from arch to separate directory 2017-05-18 23:55:48 -07:00
microblaze arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
mips MIPS: Avoid accidental raw backtrace 2017-06-30 04:42:15 +02:00
mn10300 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
nios2 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
openrisc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
parisc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
powerpc powerpc fixes for 4.12 #8 2017-06-30 10:55:34 -07:00
s390 arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
score arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
sh mm: larger stack guard gap, between vmas 2017-06-19 21:50:20 +08:00
sparc arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
tile arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
um arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
unicore32 Kbuild UAPI header export updates for v4.12 2017-05-10 20:45:36 -07:00
x86 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-07-01 09:10:17 -07:00
xtensa arch: remove unused macro/function thread_saved_pc() 2017-06-28 16:13:57 -07:00
.gitignore
Kconfig Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-05-10 10:30:46 -07:00