Re: [PATCH] Xen: ARM: Zero reserved fields of xatp before making hypervisor call

From: Stefano Stabellini
Date: Mon Dec 19 2016 - 13:49:38 EST


On Mon, 19 Dec 2016, Juergen Gross wrote:
> On 19/12/16 03:56, Jiandi An wrote:
> > Ensure all reserved fields of xatp are zero before making hypervisor
> > call to XEN in xen_map_device_mmio(). xenmem_add_to_physmap_one() in
> > XEN fails the mapping request if extra.res reserved field in xatp is
> > not zero for XENMAPSPACE_dev_mmio request.
> >
> > Signed-off-by: Jiandi An <anjiandi@xxxxxxxxxxxxxx>
> > ---
> > drivers/xen/arm-device.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/xen/arm-device.c b/drivers/xen/arm-device.c
> > index 778acf8..208273b 100644
> > --- a/drivers/xen/arm-device.c
> > +++ b/drivers/xen/arm-device.c
> > @@ -87,6 +87,9 @@ static int xen_map_device_mmio(const struct resource *resources,
> > idxs[j] = XEN_PFN_DOWN(r->start) + j;
> > }
> >
> > + /* Ensure reserved fields are set to zero */
> > + memset(&xatp, 0, sizeof(xatp));
> > +
> > xatp.domid = DOMID_SELF;
> > xatp.size = nr;
> > xatp.space = XENMAPSPACE_dev_mmio;
>
> Instead of setting xatp to 0 in each iteration I'd prefer a static
> initialization of .domid and .space:
>
> struct xen_add_to_physmap_range xatp = {
> .domid = DOMID_SELF,
> .space = XENMAPSPACE_dev_mmio
> };

+1