|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] sched/core: fix bug when moving a domain between cpupools
commit ee97008433f15e60478058c8ace514b939b6f862
Author: Jeff Kubascik <jeff.kubascik@xxxxxxxxxxxxxxx>
AuthorDate: Fri Apr 17 09:27:21 2020 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Apr 17 09:27:21 2020 +0200
sched/core: fix bug when moving a domain between cpupools
For each UNIT, sched_set_affinity is called before unit->priv is updated
to the new cpupool private UNIT data structure. The issue is
sched_set_affinity will call the adjust_affinity method of the cpupool.
If defined, the new cpupool may use unit->priv (e.g. credit), which at
this point still references the old cpupool private UNIT data structure.
This change fixes the bug by moving the switch of unit->priv earler in
the function.
Signed-off-by: Jeff Kubascik <jeff.kubascik@xxxxxxxxxxxxxxx>
Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
Acked-by: Dario Faggioli <dfaggioli@xxxxxxxx>
---
xen/common/sched/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index 626861a3fe..c4ed070470 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -686,6 +686,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
unsigned int unit_p = new_p;
unitdata = unit->priv;
+ unit->priv = unit_priv[unit_idx];
for_each_sched_unit_vcpu ( unit, v )
{
@@ -707,7 +708,6 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
*/
spin_unlock_irq(lock);
- unit->priv = unit_priv[unit_idx];
if ( !d->is_dying )
sched_move_irqs(unit);
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |