[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/shadow: drop shadow_prepare_page_type_change()'s 3rd parameter
commit cdfe7b050761853319bdb4c6d1e405687c9978ef Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Wed Jul 27 12:58:16 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Jul 27 12:58:16 2022 +0200 x86/shadow: drop shadow_prepare_page_type_change()'s 3rd parameter As of 8cc5036bc385 ("x86/pv: Fix ABAC cmpxchg() race in _get_page_type()") this no longer needs passing separately - the type can now be read from struct page_info, as the call now happens after its writing. While there also constify the 2nd parameter. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/include/asm/shadow.h | 7 +++---- xen/arch/x86/mm.c | 2 +- xen/arch/x86/mm/shadow/common.c | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/include/asm/shadow.h b/xen/arch/x86/include/asm/shadow.h index 7ef76cc063..1365fe4805 100644 --- a/xen/arch/x86/include/asm/shadow.h +++ b/xen/arch/x86/include/asm/shadow.h @@ -84,8 +84,8 @@ void shadow_final_teardown(struct domain *d); void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all); /* Adjust shadows ready for a guest page to change its type. */ -void shadow_prepare_page_type_change(struct domain *d, struct page_info *page, - unsigned long new_type); +void shadow_prepare_page_type_change(struct domain *d, + const struct page_info *page); /* Discard _all_ mappings from the domain's shadows. */ void shadow_blow_tables_per_domain(struct domain *d); @@ -113,8 +113,7 @@ static inline void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all) {} static inline void shadow_prepare_page_type_change(struct domain *d, - struct page_info *page, - unsigned long new_type) {} + const struct page_info *page) {} static inline void shadow_blow_tables_per_domain(struct domain *d) {} diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 22a4dfa838..40e132b9ba 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3018,7 +3018,7 @@ static int _get_page_type(struct page_info *page, unsigned long type, struct domain *d = page_get_owner(page); if ( d && shadow_mode_enabled(d) ) - shadow_prepare_page_type_change(d, page, type); + shadow_prepare_page_type_change(d, page); if ( (x & PGT_type_mask) != type ) { diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 06a0f22906..c37c3bb077 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -2265,8 +2265,8 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all) paging_unlock(d); } -void shadow_prepare_page_type_change(struct domain *d, struct page_info *page, - unsigned long new_type) +void shadow_prepare_page_type_change(struct domain *d, + const struct page_info *page) { if ( !(page->count_info & PGC_page_table) ) return; @@ -2278,7 +2278,7 @@ void shadow_prepare_page_type_change(struct domain *d, struct page_info *page, * pages are allowed to become writeable. */ if ( (page->shadow_flags & SHF_oos_may_write) && - new_type == PGT_writable_page ) + (page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page ) return; #endif -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |