[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |