Message ID | 20250318040023.4998-1-anderson.choi@boeing.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | xen/sched: call xfree() after local IRQ is enabled | expand |
On 18.03.2025 05:00, Anderson Choi wrote: > xen panic is observed with the following configuration. > > 1. Debug xen build (CONFIG_DEBUG=y) > 2. dom1 of an ARINC653 domain > 3. shutdown dom1 with xl command > > $ xl shutdown <domain_name> > > (XEN) **************************************** > (XEN) Panic on CPU 2: > (XEN) Assertion '!in_irq() && (local_irq_is_enabled() || > num_online_cpus() <= 1)' failed at common/xmalloc_tlsf.c:714 > (XEN) **************************************** > > panic was triggered since xfree() was called with local IRQ disabled and > therefore assertion failed. > > Fix this by calling xfree() after local IRQ is enabled. > > Fixes: 19049f8d796a sched: fix locking in a653sched_free_vdata() > Signed-off-by: Anderson Choi <anderson.choi@boeing.com> Just one nit on the patch title: There's no mention at all there of which scheduler it is. Imo "sched" there would better be replaced by the scheduler name. Jan > --- > xen/common/sched/arinc653.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/xen/common/sched/arinc653.c b/xen/common/sched/arinc653.c > index 0a3733c04e90..b95492e1d96f 100644 > --- a/xen/common/sched/arinc653.c > +++ b/xen/common/sched/arinc653.c > @@ -463,10 +463,11 @@ a653sched_free_udata(const struct scheduler *ops, void *priv) > if ( !is_idle_unit(av->unit) ) > list_del(&av->list); > > - xfree(av); > update_schedule_units(ops); > > spin_unlock_irqrestore(&sched_priv->lock, flags); > + > + xfree(av); > } > > /**
Jan, > EXT email: be mindful of links/attachments. > > On 18.03.2025 05:00, Anderson Choi wrote: >> xen panic is observed with the following configuration. >> >> 1. Debug xen build (CONFIG_DEBUG=y) >> 2. dom1 of an ARINC653 domain >> 3. shutdown dom1 with xl command >> >> $ xl shutdown <domain_name> >> >> (XEN) **************************************** >> (XEN) Panic on CPU 2: >> (XEN) Assertion '!in_irq() && (local_irq_is_enabled() || >> num_online_cpus() <= 1)' failed at common/xmalloc_tlsf.c:714 >> (XEN) **************************************** >> >> panic was triggered since xfree() was called with local IRQ disabled >> and therefore assertion failed. >> >> Fix this by calling xfree() after local IRQ is enabled. >> >> Fixes: 19049f8d796a sched: fix locking in a653sched_free_vdata() >> Signed-off-by: Anderson Choi <anderson.choi@boeing.com> > > Just one nit on the patch title: There's no mention at all there of which scheduler > it is. Imo "sched" there would better be replaced by the scheduler name. > > Jan > >> --- ... Thanks for the comment. I have just submitted patch v2 with the following title. [PATCH v2] xen/arinc653: call xfree() with local IRQ enabled Regards, Anderson
diff --git a/xen/common/sched/arinc653.c b/xen/common/sched/arinc653.c index 0a3733c04e90..b95492e1d96f 100644 --- a/xen/common/sched/arinc653.c +++ b/xen/common/sched/arinc653.c @@ -463,10 +463,11 @@ a653sched_free_udata(const struct scheduler *ops, void *priv) if ( !is_idle_unit(av->unit) ) list_del(&av->list); - xfree(av); update_schedule_units(ops); spin_unlock_irqrestore(&sched_priv->lock, flags); + + xfree(av); } /**
xen panic is observed with the following configuration. 1. Debug xen build (CONFIG_DEBUG=y) 2. dom1 of an ARINC653 domain 3. shutdown dom1 with xl command $ xl shutdown <domain_name> (XEN) **************************************** (XEN) Panic on CPU 2: (XEN) Assertion '!in_irq() && (local_irq_is_enabled() || num_online_cpus() <= 1)' failed at common/xmalloc_tlsf.c:714 (XEN) **************************************** panic was triggered since xfree() was called with local IRQ disabled and therefore assertion failed. Fix this by calling xfree() after local IRQ is enabled. Fixes: 19049f8d796a sched: fix locking in a653sched_free_vdata() Signed-off-by: Anderson Choi <anderson.choi@boeing.com> --- xen/common/sched/arinc653.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)