ARM: 8148/1: flush TLS and thumbee register state during exec
authorNathan Lynch <nathan_lynch@mentor.com>
Thu, 11 Sep 2014 01:49:08 +0000 (02:49 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 16 Sep 2014 15:09:32 +0000 (16:09 +0100)
commitfbfb872f5f417cea48760c535e0ff027c88b507a
tree269d5a514efd78c857e5d044860e5bcc6de3644c
parent7a0bd49713aca3040099e1413d1cc9f08802d97a
ARM: 8148/1: flush TLS and thumbee register state during exec

The TPIDRURO and TPIDRURW registers need to be flushed during exec;
otherwise TLS information is potentially leaked.  TPIDRURO in
particular needs careful treatment.  Since flush_thread basically
needs the same code used to set the TLS in arm_syscall, pull that into
a common set_tls helper in tls.h and use it in both places.

Similarly, TEEHBR needs to be cleared during exec as well.  Clearing
its save slot in thread_info isn't right as there is no guarantee
that a thread switch will occur before the new program runs.  Just
setting the register directly is sufficient.

Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/tls.h
arch/arm/kernel/process.c
arch/arm/kernel/thumbee.c
arch/arm/kernel/traps.c