Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2
xen
24272-xenpaging_Fix_c-s_235070a29c8c3ddf7_updat...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 24272-xenpaging_Fix_c-s_235070a29c8c3ddf7_update_machine_to_phys_mapping_during_page_deallocation.patch of Package xen
changeset: 24272:62ff6a318c5d user: Keir Fraser <keir@xen.org> date: Wed Nov 30 16:59:58 2011 -0800 files: xen/common/page_alloc.c description: xenpaging: Fix c/s 23507:0a29c8c3ddf7 ("update machine_to_phys_mapping[] during page deallocation") This patch clobbers page owner in free_heap_pages() before we are finished using it. This means that a subsequent test to determine whether it is safe to avoid safety TLB flushes incorrectly always determines that it is safe to do so. The fix is simple: we can defer the original patch's work until after we are done with the page-owner field. Thanks to Christian Limpach for spotting this one. Signed-off-by: Keir Fraser <keir@xen.org> --- xen/common/page_alloc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) Index: xen-4.1.2-testing/xen/common/page_alloc.c =================================================================== --- xen-4.1.2-testing.orig/xen/common/page_alloc.c +++ xen-4.1.2-testing/xen/common/page_alloc.c @@ -540,10 +540,6 @@ static void free_heap_pages( for ( i = 0; i < (1 << order); i++ ) { - /* This page is not a guest frame any more. */ - page_set_owner(&pg[i], NULL); /* set_gpfn_from_mfn snoops pg owner */ - set_gpfn_from_mfn(mfn + i, INVALID_M2P_ENTRY); - /* * Cannot assume that count_info == 0, as there are some corner cases * where it isn't the case and yet it isn't a bug: @@ -567,6 +563,10 @@ static void free_heap_pages( pg[i].u.free.need_tlbflush = (page_get_owner(&pg[i]) != NULL); if ( pg[i].u.free.need_tlbflush ) pg[i].tlbflush_timestamp = tlbflush_current_time(); + + /* This page is not a guest frame any more. */ + page_set_owner(&pg[i], NULL); /* set_gpfn_from_mfn snoops pg owner */ + set_gpfn_from_mfn(mfn + i, INVALID_M2P_ENTRY); } avail[node][zone] += 1 << order;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor