mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86/vpt: fully init timers before putting onto list
With pt_vcpu_lock() no longer acquiring the pt_migrate lock, parties iterating the list and acting on the timers of the list entries will no longer be kept from entering their loops by create_periodic_time()'s holding of that lock. Therefore at least init_timer() needs calling ahead of list insertion, but keep this and set_timer() together. Fixes:8113b02f0b("x86/vpt: do not take pt_migrate rwlock in some cases") Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> master commit:6d622f3a96master date: 2021-06-15 15:14:20 +0200
This commit is contained in:
1 parent
3556dc6bfb
commit
9892901047
1 file changed
+3
-3
@@ -554,14 +554,14 @@ void create_periodic_time(
|
||||
pt->cb = cb;
|
||||
pt->priv = data;
|
||||
|
||||
init_timer(&pt->timer, pt_timer_fn, pt, v->processor);
|
||||
set_timer(&pt->timer, pt->scheduled);
|
||||
|
||||
pt_vcpu_lock(v);
|
||||
pt->on_list = 1;
|
||||
list_add(&pt->list, &v->arch.hvm.tm_list);
|
||||
pt_vcpu_unlock(v);
|
||||
|
||||
init_timer(&pt->timer, pt_timer_fn, pt, v->processor);
|
||||
set_timer(&pt->timer, pt->scheduled);
|
||||
|
||||
write_unlock(&v->domain->arch.hvm.pl_time->pt_migrate);
|
||||
}
|
||||
|
||||
|
||||