sparc64: Kill bogus TPC/address truncation during 32-bit faults.
authorDavid S. Miller <davem@davemloft.net>
Wed, 4 Feb 2009 00:28:23 +0000 (16:28 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Feb 2009 00:28:23 +0000 (16:28 -0800)
commit9b02605826903203d5301049c1f52e722584785c
tree9f4c04e822ab9fff151d9d7aeb907915d8c79b20
parent47a4a0e766e3152dee667ea8fcca8465c8a0759f
sparc64: Kill bogus TPC/address truncation during 32-bit faults.

This builds upon eeabac7386ca13bfe1a58afeb04326a9e1a3a20e
("sparc64: Validate kernel generated fault addresses on sparc64.")

Upon further consideration, we actually should never see any
fault addresses for 32-bit tasks with the upper 32-bits set.

If it does every happen, by definition it's a bug.  Whatever
context created that fault would only have that fault satisfied
if we used the full 64-bit address.  If we truncate it, we'll
always fault the wrong address and we'll always loop faulting
forever.

So catch such conditions and mark them as errors always.  Log
the error and fail the fault.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/mm/fault_64.c