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

Re: [Xen-devel] [PATCH] xen/arch/x86: remove IS_PRIV bypass on IRQ check



>>> On 18.04.13 at 18:11, Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> wrote:
> This prevents a process in dom0 from granting a domU access to an IRQ without
> adding the IRQ to the domU's list of permitted IRQs. This operation 
> currently
> succeeds in dom0 but would fail if the device model were running in a 
> stubdom,
> so making the failure consistent should ease debugging of the device-model
> stubdoms.

I'm sorry for having lost half of your original patch - I know I
resolved the conflicts with the security one, but apparently then
popped it without first refreshing...

Jan

> Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>
> Cc: Keir Fraser <keir@xxxxxxx>
> Cc: Jan Beulich <jbeulich@xxxxxxxx>
> ---
>  xen/arch/x86/domctl.c | 22 ++++++++--------------
>  1 file changed, 8 insertions(+), 14 deletions(-)
> 
> diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
> index 9580390..c71df43 100644
> --- a/xen/arch/x86/domctl.c
> +++ b/xen/arch/x86/domctl.c
> @@ -566,8 +566,10 @@ long arch_do_domctl(
>      case XEN_DOMCTL_bind_pt_irq:
>      {
>          xen_domctl_bind_pt_irq_t * bind;
> +        int irq;
>  
>          bind = &(domctl->u.bind_pt_irq);
> +        irq = domain_pirq_to_irq(d, bind->machine_irq);
>  
>          ret = -EINVAL;
>          if ( !is_hvm_domain(d) )
> @@ -578,13 +580,8 @@ long arch_do_domctl(
>              break;
>  
>          ret = -EPERM;
> -        if ( !IS_PRIV(current->domain) )
> -        {
> -            int irq = domain_pirq_to_irq(d, bind->machine_irq);
> -
> -            if ( irq <= 0 || !irq_access_permitted(current->domain, irq) )
> -                break;
> -        }
> +        if ( irq <= 0 || !irq_access_permitted(current->domain, irq) )
> +            break;
>  
>          ret = -ESRCH;
>          if ( iommu_enabled )
> @@ -602,17 +599,14 @@ long arch_do_domctl(
>      case XEN_DOMCTL_unbind_pt_irq:
>      {
>          xen_domctl_bind_pt_irq_t * bind;
> +        int irq;
>  
>          bind = &(domctl->u.bind_pt_irq);
> +        irq = domain_pirq_to_irq(d, bind->machine_irq);
>  
>          ret = -EPERM;
> -        if ( !IS_PRIV(current->domain) )
> -        {
> -            int irq = domain_pirq_to_irq(d, bind->machine_irq);
> -
> -            if ( irq <= 0 || !irq_access_permitted(current->domain, irq) )
> -                break;
> -        }
> +        if ( irq <= 0 || !irq_access_permitted(current->domain, irq) )
> +            break;
>  
>          ret = xsm_unbind_pt_irq(XSM_HOOK, d, bind);
>          if ( ret )
> -- 
> 1.8.1.4




_______________________________________________
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®.