[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] domctl: relax getdomaininfo permissions
On 04/08/16 17:07, Jan Beulich wrote: >>>> 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; Looks good. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |