[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] domctl: relax getdomaininfo permissions
>>> On 04.08.16 at 17:55, <andrew.cooper3@xxxxxxxxxx> wrote: > On 04/08/16 16:44, Jan Beulich wrote: >>>>> On 04.08.16 at 17:22, <andrew.cooper3@xxxxxxxxxx> wrote: >>> On 04/08/16 09:41, Jan Beulich wrote: >>>> @@ -817,14 +816,22 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe >>>> >>>> case XEN_DOMCTL_getdomaininfo: >>>> { >>>> - domid_t dom = op->domain; >>>> - >>>> - rcu_read_lock(&domlist_read_lock); >>>> + domid_t dom = DOMID_INVALID; >>>> >>>> - for_each_domain ( d ) >>>> - if ( d->domain_id >= dom ) >>>> + if ( !d ) >>>> + { >>>> + ret = -EINVAL; >>>> + if ( op->domain >= DOMID_FIRST_RESERVED ) >>>> break; >>>> >>>> + rcu_read_lock(&domlist_read_lock); >>>> + >>>> + dom = op->domain; >>>> + for_each_domain ( d ) >>>> + if ( d->domain_id >= dom ) >>>> + break; >>>> + } >>>> + >>>> ret = -ESRCH; >>>> if ( d == NULL ) >>>> goto getdomaininfo_out; >>>> @@ -839,6 +846,9 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe >>>> copyback = 1; >>>> >>>> getdomaininfo_out: >>>> + if ( dom == DOMID_INVALID ) >>>> + break; >>> What is this hunk for? If you fail the "op->domain >= >>> DOMID_FIRST_RESERVED" check we break out of the entire >>> XEN_DOMCTL_getdomaininfo case. >> If we start out with a non-NULL d, we have to avoid the >> rcu_read_unlock() as well as the setting of d to NULL at the >> end. > > Would you mind adding a short comment to that effect? It is certainly > not obvious from just looking at the code. How about: @@ -839,6 +846,10 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe copyback = 1; getdomaininfo_out: + /* When d was non-NULL upon entry, no cleanup is needed. */ + if ( dom == DOMID_INVALID ) + break; + rcu_read_unlock(&domlist_read_lock); d = NULL; break; Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |