sparc: Don't leak context bits into thread->fault_address
authorDavid S. Miller <davem@davemloft.net>
Thu, 28 Jul 2016 00:50:26 +0000 (17:50 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Nov 2016 09:06:40 +0000 (10:06 +0100)
commita395f7a66eec5db41f8860427f955d4cdabb1063
treeb88f7740fe2589dd76bcb7635696434e73672eca
parent4e772c53ab9836b083c21acf9d2d76805e1d133e
sparc: Don't leak context bits into thread->fault_address

[ Upstream commit 4f6deb8cbab532a8d7250bc09234c1795ecb5e2c ]

On pre-Niagara systems, we fetch the fault address on data TLB
exceptions from the TLB_TAG_ACCESS register.  But this register also
contains the context ID assosciated with the fault in the low 13 bits
of the register value.

This propagates into current_thread_info()->fault_address and can
cause trouble later on.

So clear the low 13-bits out of the TLB_TAG_ACCESS value in the cases
where it matters.

Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/sparc/kernel/dtlb_prot.S
arch/sparc/kernel/ktlb.S
arch/sparc/kernel/tsb.S