[S390] Fix pte type checking.
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 18 Oct 2006 16:30:51 +0000 (18:30 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 18 Oct 2006 16:30:51 +0000 (18:30 +0200)
commit833774849d50a59f58e9bdfc3d9c88e682b3596d
tree5527a4f8e21233a72af48c369917ebe2dc2883df
parent2c91971f84be168a35f937dd6c61e56e492b2185
[S390] Fix pte type checking.

handle_pte_fault uses pte_present, pte_none and pte_file to find out
the type of a pte. That is done without holding the page table lock.
This clashes with the way how ptep_clear_flush removes active page
table entries from the system. First the ipte instruction is used
to invalidate the pte and remove all plt entries for the page. The
ipte sets the hardware invalid bit without changing any other bit.
After the ipte finished the pte is cleared. A concurrent fault can
observe the the previously valid pte with the invalid bit set. With
the current encoding of the different pte types an invalidated
read-only pte can be misinterpreted as a swap-pte.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
include/asm-s390/pgtable.h