aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2008-08-13 13:18:06 +0900
committerIsaku Yamahata <yamahata@valinux.co.jp>2008-08-13 13:18:06 +0900
commitf60127899040f1103a286e56a27d67432c2c9652 (patch)
tree25df105188837b174d0209caaa46854bbfb0823d
parent570d530d68880592db3062aa353cbaf12047158d (diff)
downloadxen-f60127899040f1103a286e56a27d67432c2c9652.tar.gz
xen-f60127899040f1103a286e56a27d67432c2c9652.tar.bz2
xen-f60127899040f1103a286e56a27d67432c2c9652.zip
[IA64] fix vtlb flush
Live migration with uninitialized vcpu will crash xen by null pointer. Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
-rw-r--r--xen/arch/ia64/xen/vhpt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/xen/arch/ia64/xen/vhpt.c b/xen/arch/ia64/xen/vhpt.c
index 6e89f0d44f..525b76fc37 100644
--- a/xen/arch/ia64/xen/vhpt.c
+++ b/xen/arch/ia64/xen/vhpt.c
@@ -526,6 +526,8 @@ void flush_tlb_for_log_dirty(struct domain *d)
/* NB. There is no race because all vcpus are paused. */
if (is_hvm_domain(d)) {
for_each_vcpu (d, v) {
+ if (!v->is_initialised)
+ continue;
/* XXX: local_flush_tlb_all is called redundantly */
thash_purge_all(v);
}
@@ -533,6 +535,8 @@ void flush_tlb_for_log_dirty(struct domain *d)
NULL, 1, 1);
} else if (HAS_PERVCPU_VHPT(d)) {
for_each_vcpu (d, v) {
+ if (!v->is_initialised)
+ continue;
vcpu_purge_tr_entry(&PSCBX(v,dtlb));
vcpu_purge_tr_entry(&PSCBX(v,itlb));
vcpu_vhpt_flush(v);