|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v8] xen/domain: rewrite emulation_flags_ok()
On Tue, Jun 17, 2025 at 08:53:51AM +0200, Nicola Vetrini wrote:
> On 2025-06-17 08:19, Jan Beulich wrote:
> > On 17.06.2025 03:15, dmkhn@xxxxxxxxx wrote:
> > > --- a/xen/arch/x86/domain.c
> > > +++ b/xen/arch/x86/domain.c
> > > @@ -743,32 +743,75 @@ int arch_sanitise_domain_config(struct
> > > xen_domctl_createdomain *config)
> > > return 0;
> > > }
> > >
> > > +/*
> > > + * Verify that the domain's emulation flags resolve to a supported
> > > configuration.
> > > + *
> > > + * This ensures we only allow a known, safe subset of emulation
> > > combinations
> > > + * (for both functionality and security). Arbitrary mixes are
> > > likely to cause
> > > + * errors (e.g. null pointer dereferences).
> > > + *
> > > + * NB: use the internal X86_EMU_XXX symbols, not the public
> > > XEN_X86_EMU_XXX
> > > + * symbols, to take build-time config options (e.g. CONFIG_HVM)
> > > into account
> > > + * for short-circuited emulations.
> > > + */
> > > static bool emulation_flags_ok(const struct domain *d, uint32_t
> > > emflags)
> > > {
> > > + enum domain_capability {
> > > + CAP_PV = BIT(0, U),
> > > + CAP_HVM = BIT(1, U),
> > > + CAP_HWDOM = BIT(2, U),
> > > + CAP_DOMU = BIT(3, U),
> > > + };
> > > + static const struct {
> > > + enum domain_capability caps;
> > > + uint32_t min;
> > > + uint32_t opt;
> > > + } configs[] = {
> > > +#ifdef CONFIG_PV
> > > + /* PV dom0 and domU */
> > > + {
> > > + .caps = CAP_PV | CAP_HWDOM | CAP_DOMU,
> >
> > Just to double check - are we sure Misra / Eclair will like this (ab)use
> > of an enum?
> >
> > Jan
>
> Likely not, but x86_64 is build with CONFIG_PV=n
It's doing the same for HVM also, so it would trigger for the instance
below then. I will ack v7 then, which used an unsigned int instead.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |