s390/mm: fix incorrect ASCE after crst_table_downgrade
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 1 Mar 2015 14:56:45 +0000 (06:56 -0800)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 2 Mar 2015 19:35:57 +0000 (11:35 -0800)
commit691d5264158e58004904f285417fefaf8650ffe6
tree2a225e091af5d5ffb934ee4994db91ae0ad181aa
parenta9ca8eb7afb4f1c90d8e43092e94c4e86785efbc
s390/mm: fix incorrect ASCE after crst_table_downgrade

The switch_mm function does nothing in case the prev and next mm
are the same. It can happen that a crst_table_downgrade has changed
the top-level pgd in the meantime on a different CPU. Always store
the new ASCE to be picked up in entry.S.

[heiko.carstens@de.ibm.com]: Bug was introduced with git commit
53e857f30867 ("s390/mm,tlb: race of lazy TLB flush vs. recreation
of TLB entries") and causes random crashes due to broken page tables
being used.

Reported-by: Dominik Vogt <vogt@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
arch/s390/include/asm/mmu_context.h