[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] libxc: match types of 'subject' and 'foreigndom' between struct xc_mmu and do_mmu_update



On Wed, 2013-01-23 at 11:44 +0000, Dario Faggioli wrote:
> In do_mmu_update() (in the hypervisor) the parameter 'foreigndom' is
> 'unsigned int' and both its high (bits 31-16) and low (bits 15-0) are
> parts utilised, as explained here:
>  
> http://xenbits.xen.org/docs/unstable/hypercall/include,public,xen.h.html#Func_HYPERVISOR_mmu_update
> 
> However, the actual parameter, i.e., the 'subject' field in
> struct xc_mmu is declared as domid_t, which typedef-s to uint16_t.
> This means we are never able to pass anything via the higher 16 bits
> of 'foreigndom', which in turns may cause the hypercall to fail when
> called on an actual foreign domain.
> 
> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>

Seems sane, acked + applied, thanks.

> 
> diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c
> --- a/tools/libxc/xc_private.c
> +++ b/tools/libxc/xc_private.c
> @@ -478,13 +478,13 @@ static int flush_mmu_updates(xc_interfac
>      return err;
>  }
>  
> -struct xc_mmu *xc_alloc_mmu_updates(xc_interface *xch, domid_t dom)
> +struct xc_mmu *xc_alloc_mmu_updates(xc_interface *xch, unsigned int subject)
>  {
>      struct xc_mmu *mmu = malloc(sizeof(*mmu));
>      if ( mmu == NULL )
>          return mmu;
>      mmu->idx     = 0;
> -    mmu->subject = dom;
> +    mmu->subject = subject;
>      return mmu;
>  }
>  
> diff --git a/tools/libxc/xc_private.h b/tools/libxc/xc_private.h
> --- a/tools/libxc/xc_private.h
> +++ b/tools/libxc/xc_private.h
> @@ -308,10 +308,10 @@ void discard_file_cache(xc_interface *xc
>  struct xc_mmu {
>      mmu_update_t updates[MAX_MMU_UPDATES];
>      int          idx;
> -    domid_t      subject;
> +    unsigned int subject;
>  };
>  /* Structure returned by xc_alloc_mmu_updates must be free()'ed by caller. */
> -struct xc_mmu *xc_alloc_mmu_updates(xc_interface *xch, domid_t dom);
> +struct xc_mmu *xc_alloc_mmu_updates(xc_interface *xch, unsigned int subject);
>  int xc_add_mmu_update(xc_interface *xch, struct xc_mmu *mmu,
>                     unsigned long long ptr, unsigned long long val);
>  int xc_flush_mmu_updates(xc_interface *xch, struct xc_mmu *mmu);
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.