diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-27 02:19:27 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-28 03:19:28 -0400 |
commit | 0196c642f76c469c17ca09d7f904bccc123bac09 (patch) | |
tree | c5b7dc666f85c6694186d98248a157b9b052f8fd /arch/s390/include/asm | |
parent | 0587d409ec53312f735d2004d5f47f8effee1ea9 (diff) |
s390/pgtable: fix mprotect for single-threaded KVM guests
For a single-threaded KVM guest ptep_modify_prot_start will not use
IPTE, the invalid bit will therefore not be set. If DEBUG_VM is set
pgste_set_key called by ptep_modify_prot_commit will complain about
the missing invalid bit. ptep_modify_prot_start should set the
invalid bit in all cases.
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm')
-rw-r--r-- | arch/s390/include/asm/pgtable.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 125e37909998..1d144b6f3ba2 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -1093,6 +1093,7 @@ static inline pte_t ptep_modify_prot_start(struct mm_struct *mm, | |||
1093 | 1093 | ||
1094 | pte = *ptep; | 1094 | pte = *ptep; |
1095 | ptep_flush_lazy(mm, address, ptep); | 1095 | ptep_flush_lazy(mm, address, ptep); |
1096 | pte_val(*ptep) |= _PAGE_INVALID; | ||
1096 | 1097 | ||
1097 | if (mm_has_pgste(mm)) { | 1098 | if (mm_has_pgste(mm)) { |
1098 | pgste = pgste_update_all(&pte, pgste); | 1099 | pgste = pgste_update_all(&pte, pgste); |