diff options
author | Tim Deegan <tim.deegan@xensource.com> | 2006-09-28 17:09:11 +0100 |
---|---|---|
committer | Tim Deegan <tim.deegan@xensource.com> | 2006-09-28 17:09:11 +0100 |
commit | 9a01a03d51ddc5438a7e88b3b701d081b4fd23a1 (patch) | |
tree | 2ae6323aa7266b0cd353b4a09706d26f72343ea2 /xen/include/asm-x86/shadow.h | |
parent | 78c7edb1d5f00ef2c00992fa6f41305196f51459 (diff) | |
download | xen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.tar.gz xen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.tar.bz2 xen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.zip |
[XEN] Fix interaction between tlbflush timestamp and shadow flags
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/shadow.h')
-rw-r--r-- | xen/include/asm-x86/shadow.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h index 94a4ff11fd..d6c9688de7 100644 --- a/xen/include/asm-x86/shadow.h +++ b/xen/include/asm-x86/shadow.h @@ -481,7 +481,12 @@ shadow_remove_all_shadows_and_parents(struct vcpu *v, mfn_t gmfn); extern void sh_remove_shadows(struct vcpu *v, mfn_t gmfn, int all); static inline void shadow_remove_all_shadows(struct vcpu *v, mfn_t gmfn) { + int was_locked = shadow_lock_is_acquired(v->domain); + if ( !was_locked ) + shadow_lock(v->domain); sh_remove_shadows(v, gmfn, 1); + if ( !was_locked ) + shadow_unlock(v->domain); } /* Add a page to a domain */ |