linux/arch/arm
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
..
boot Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-06-27 08:56:52 -07:00
common ARM: 8675/1: MCPM: ensure not to enter __hyp_soft_restart from loopback and cpu_power_down 2017-05-23 17:26:08 +01:00
configs ARM: configs: add a gemini defconfig 2017-05-18 23:56:47 -07:00
crypto
firmware
include ARM: 8687/1: signal: Fix unparseable iwmmxt_sigframe in uc_regspace[] 2017-07-24 14:26:55 +01:00
kernel ARM: 8687/1: signal: Fix unparseable iwmmxt_sigframe in uc_regspace[] 2017-07-24 14:26:55 +01:00
kvm arm: KVM: Allow unaligned accesses at HYP 2017-06-06 22:20:02 +02:00
lib
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 Merge tag 'at91-4.12-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux into fixes 2017-06-01 17:07:31 -07:00
mach-axxia
mach-bcm ARM: remove duplicate 'const' annotations' 2017-05-19 10:12:55 +02:00
mach-berlin
mach-clps711x
mach-cns3xxx ARM: remove duplicate 'const' annotations' 2017-05-19 10:12:55 +02:00
mach-davinci ARM: davinci: PM: Do not free useful resources in normal path in 'davinci_pm_init' 2017-05-17 15:25:18 +05:30
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: SoC driver updates 2017-05-09 10:01:15 -07:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
mach-keystone ARM: keystone: Drop PM domain support for k2g 2017-04-04 08:59:28 -07:00
mach-ks8695
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-mmp ARM: mmp: let clk_disable() return immediately if clk is NULL 2017-03-30 17:38:34 +02:00
mach-moxart irqchip/faraday: Replace moxa with ftintc010 2017-04-07 10:36:30 +01:00
mach-mv78xx0
mach-mvebu
mach-mxs ARM: mxs: add support for I2SE Duckbill 2 boards 2017-04-10 21:25:50 +08:00
mach-netx
mach-nomadik
mach-nspire
mach-omap1
mach-omap2 ARM: remove duplicate 'const' annotations' 2017-05-19 10:12:55 +02:00
mach-orion5x
mach-oxnas
mach-picoxcell
mach-prima2
mach-pxa ARM: pxa/raumfeld: fix compile error in rotary controller resources 2017-04-18 11:28:38 -07:00
mach-qcom
mach-realview
mach-rockchip
mach-rpc
mach-s3c24xx
mach-s3c64xx regulator: arizona-ldo1: Move pdata into a separate structure 2017-04-25 16:36:32 +01:00
mach-s5pv210
mach-sa1100
mach-shmobile
mach-socfpga
mach-spear ARM: remove duplicate 'const' annotations' 2017-05-19 10:12:55 +02:00
mach-sti
mach-stm32
mach-sunxi
mach-tango
mach-tegra soc/tegra: Move Tegra flowctrl driver 2017-04-04 15:48:04 +02:00
mach-u300
mach-uniphier
mach-ux500
mach-versatile
mach-vexpress
mach-vt8500
mach-w90x900 ARM: w90x900: let clk_disable() return immediately if clk is NULL 2017-03-30 17:37:19 +02:00
mach-zx
mach-zynq
mm Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-07-02 10:09:40 -07:00
net arm: use set_memory.h header 2017-05-08 17:15:13 -07:00
nwfpe
oprofile
plat-iop
plat-omap
plat-orion
plat-pxa
plat-samsung
plat-versatile ARM: plat-versatile: remove stale clock header 2017-04-07 11:57:57 +02:00
probes
tools
vdso
vfp
xen xen: Implement EFI reset_system callback 2017-05-02 12:06:50 +02:00
Kconfig ARM: 8681/1: make VMSPLIT_3G_OPT depends on !ARM_LPAE 2017-06-12 15:47:28 +01:00
Kconfig-nommu
Kconfig.debug
Makefile