s390/pgtable: Save pgste during modify_prot_start/commit
In modify_prot_start we update the pgste value but never store it back into the original location. Lets save the calculated result, since modify_prot_commit will use the value of the pgste. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
9cc5c206d9
commit
3a82603be4
|
@ -640,6 +640,13 @@ static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void pgste_set(pte_t *ptep, pgste_t pgste)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_PGSTE
|
||||||
|
*(pgste_t *)(ptep + PTRS_PER_PTE) = pgste;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static inline pgste_t pgste_update_all(pte_t *ptep, pgste_t pgste)
|
static inline pgste_t pgste_update_all(pte_t *ptep, pgste_t pgste)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_PGSTE
|
#ifdef CONFIG_PGSTE
|
||||||
|
@ -1101,8 +1108,10 @@ static inline pte_t ptep_modify_prot_start(struct mm_struct *mm,
|
||||||
if (!mm_exclusive(mm))
|
if (!mm_exclusive(mm))
|
||||||
__ptep_ipte(address, ptep);
|
__ptep_ipte(address, ptep);
|
||||||
|
|
||||||
if (mm_has_pgste(mm))
|
if (mm_has_pgste(mm)) {
|
||||||
pgste = pgste_update_all(&pte, pgste);
|
pgste = pgste_update_all(&pte, pgste);
|
||||||
|
pgste_set(ptep, pgste);
|
||||||
|
}
|
||||||
return pte;
|
return pte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue