powerpc: Set used_(vsr|vr|spe) in sigreturn path when MSR bits are active
authorSimon Guo <wei.guo.simon@gmail.com>
Tue, 26 Jul 2016 08:06:01 +0000 (16:06 +0800)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 13 Sep 2016 07:37:12 +0000 (17:37 +1000)
commite1c0d66fcb179a1737b3d5cc11c6e37bcabbd861
tree6260230cda5bbe7a47f5d5955f7892f737fca6c8
parent261831160d4df6bafe2f0e12e6de9e5731519e06
powerpc: Set used_(vsr|vr|spe) in sigreturn path when MSR bits are active

Normally, when MSR[VSX/VR/SPE] bits == 1, the used_vsr/used_vr/used_spe
bit have already been set. However when loading a signal frame from user
space we need to explicitly set used_vsr/used_vr/used_spe to make them
consistent with the MSR bits from the signal frame.

For example, CRIU application, who utilizes sigreturn to restore
checkpointed process, will lead to the case where MSR[VSX] bit is active
in signal frame, but used_vsr bit is not set in the kernel. (the same
applies to VR/SPE).

This patch fixes this by always setting used_* bit when MSR related bits
are active in signal frame and we are doing sigreturn.

Based on a proposal by Benh.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Simon Guo <wei.guo.simon@gmail.com>
[mpe: Massage change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/signal_32.c
arch/powerpc/kernel/signal_64.c