Message ID | 20190925070503.13850-3-jgross@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xen/sched: fix freeing of per-vcpu data | expand |
On 25.09.2019 09:05, Juergen Gross wrote: > In case of an allocation error of per-vcpu data in sched_move_domain() > the already allocated data is freed just using xfree(). This is wrong > as some schedulers need to do additional operations (e.g. the arinc653 > scheduler needs to remove the vcpu-data from a list). > > So instead xfree() make use of the sched_free_vdata() hook. > > Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
On Wed, 2019-09-25 at 09:05 +0200, Juergen Gross wrote: > In case of an allocation error of per-vcpu data in > sched_move_domain() > the already allocated data is freed just using xfree(). This is wrong > as some schedulers need to do additional operations (e.g. the > arinc653 > scheduler needs to remove the vcpu-data from a list). > > So instead xfree() make use of the sched_free_vdata() hook. > > Signed-off-by: Juergen Gross <jgross@suse.com> > Reviewed-by: Dario Faggioli <dfaggioli@suse.com> Regards
diff --git a/xen/common/schedule.c b/xen/common/schedule.c index 13b5ffc7cf..13c17fe944 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -386,7 +386,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c) if ( vcpu_priv[v->vcpu_id] == NULL ) { for_each_vcpu ( d, v ) - xfree(vcpu_priv[v->vcpu_id]); + sched_free_vdata(c->sched, vcpu_priv[v->vcpu_id]); xfree(vcpu_priv); sched_free_domdata(c->sched, domdata); return -ENOMEM;
In case of an allocation error of per-vcpu data in sched_move_domain() the already allocated data is freed just using xfree(). This is wrong as some schedulers need to do additional operations (e.g. the arinc653 scheduler needs to remove the vcpu-data from a list). So instead xfree() make use of the sched_free_vdata() hook. Signed-off-by: Juergen Gross <jgross@suse.com> --- xen/common/schedule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)