powerpc: Keep thread.dscr and thread.dscr_inherit in sync
authorAnton Blanchard <anton@samba.org>
Mon, 3 Sep 2012 16:48:46 +0000 (16:48 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 5 Sep 2012 06:05:21 +0000 (16:05 +1000)
commit00ca0de02f80924dfff6b4f630e1dff3db005e35
treec3e314e7804d634f926e319bf46ef101f777caf8
parent1b6ca2a6fe56e7697d57348646e07df08f43b1bb
powerpc: Keep thread.dscr and thread.dscr_inherit in sync

When we update the DSCR either via emulation of mtspr(DSCR) or via
a change to dscr_default in sysfs we don't update thread.dscr.
We will eventually update it at context switch time but there is
a period where thread.dscr is incorrect.

If we fork at this point we will copy the old value of thread.dscr
into the child. To avoid this, always keep thread.dscr in sync with
reality.

This issue was found with the following testcase:

http://ozlabs.org/~anton/junkcode/dscr_inherit_test.c

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: <stable@kernel.org> # 3.0+
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/sysfs.c
arch/powerpc/kernel/traps.c