diff options
author | Srinivas KANDAGATLA <srinivas.kandagatla@st.com> | 2011-06-08 15:22:39 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-06-08 15:22:39 +0900 |
commit | 5bdbd4fa4df6891a6644d588c9a30d30e7c0af8e (patch) | |
tree | 5ae072f2628684d085b92aab2398dd873c20d619 /security/capability.c | |
parent | 363e9f05cbd105a900b7baf2cc55ec0cba546d08 (diff) |
sh: Fix up xchg/cmpxchg corruption with gUSA RB.
gUSA special cases r15 for part of its login/out sequence, meaning that
any parameters need to be explicitly prohibited from accidentally being
assigned that particular register, and the compiler ultimately needs to
use a temporary instead.
Certain configurations have begun generating code paths that do indeed
get allocated r15, resulting in immediate corruption of the exchanged
value. This was observed in (amongst others) exit_mm() code generation
where the xchg_u32 call was immediately corrupting a structure address.
As this is a general gUSA restriction, the rest of the users likewise
need to be updated to ensure sensible constraints.
References: https://bugzilla.stlinux.com/show_bug.cgi?id=11229
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
Reviewed-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'security/capability.c')
0 files changed, 0 insertions, 0 deletions