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

Re: [Xen-devel] [PATCH RFC v2 2/4] x86/mem_access: mem_access and mem_event changes to support PV domains



>>> On 08.07.14 at 04:50, <aravindp@xxxxxxxxx> wrote:
> +static int mem_access_set_default(struct domain *d, uint64_t *start_page,
> +                           xenmem_access_t access)
> +{
> +    struct p2m_domain *p2m = p2m_get_hostp2m(d);
> +    struct page_info *page;
> +    struct page_list_head head;
> +    p2m_access_t a;
> +    int rc = 0, ctr = 0;
> +
> +    if ( !is_pv_domain(d) )
> +        return -ENOSYS;
> +
> +    ASSERT(shadow_mode_enabled(d));
> +
> +    rc = p2m_convert_xenmem_access(p2m, access, &a);
> +    if ( rc != 0 )
> +        return rc;
> +
> +    /*
> +     * For PV domains we only support r, rw, rx, rx2rw and rwx access
> +     * permissions
> +     */
> +    switch ( a )
> +    {
> +    case p2m_access_n:
> +    case p2m_access_w:
> +    case p2m_access_x:
> +    case p2m_access_wx:
> +    case p2m_access_n2rwx:
> +        return -EINVAL;
> +    default:
> +        break;
> +    }
> +
> +    paging_lock_recursive(d);
> +
> +    if ( *start_page )
> +    {
> +        head.next = (struct page_info *)*start_page;

What guarantees that the continuation page is still on d->page_list,
or that now other page got inserted ahead of it? And anyway you're
iterating the list without holding d->page_alloc_lock.

Jan


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