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

Re: [Xen-devel] [PATCH V1 1/2] x86/altp2m: Add hypercall to set a range of sve bits



>>   
>> +/*
>> + * Set/clear the #VE suppress bit for multiple pages.  Only available on 
>> VMX.
>> + */
>> +long p2m_set_suppress_ve_multi(struct domain *d, uint32_t start, uint32_t 
>> nr,
>> +                               bool suppress_ve, unsigned int altp2m_idx)
>> +{
>> +    struct p2m_domain *host_p2m = p2m_get_hostp2m(d);
>> +    struct p2m_domain *ap2m = NULL;
>> +    struct p2m_domain *p2m;
>> +    long rc = 0;
>> +
>> +    if ( altp2m_idx > 0 )
>> +    {
>> +        if ( altp2m_idx >= MAX_ALTP2M ||
>> +             d->arch.altp2m_eptp[altp2m_idx] == mfn_x(INVALID_MFN) )
>> +            return -EINVAL;
>> +
>> +        p2m = ap2m = d->arch.altp2m_p2m[altp2m_idx];
>> +    }
>> +    else
>> +        p2m = host_p2m;
>> +
>> +    p2m_lock(host_p2m);
>> +
>> +    if ( ap2m )
>> +        p2m_lock(ap2m);
>> +
>> +
>> +    while ( start < nr )
>> +    {
>> +        p2m_access_t a;
>> +        p2m_type_t t;
>> +        mfn_t mfn;
>> +
>> +        rc = altp2m_get_effective_entry(p2m, _gfn(start), &mfn, &t, &a, 
>> AP2MGET_query);
>> +
>> +        if ( rc )
>> +            a = p2m->default_access;
>> +
>> +        rc = p2m->set_entry(p2m, _gfn(start), mfn, PAGE_ORDER_4K, t, a, 
>> suppress_ve);
>> +
>> +        /* Try best effort for setting the whole range. */
>> +        if ( rc )
>> +            continue;
>> +
>> +        /* Check for continuation if it's not the last iteration. */
>> +        if ( nr > ++start && hypercall_preempt_check() )
>> +        {
>> +            rc = start;
>> +            break;
>> +        }
> 
> What's the point of the "if ( rc ) continue;"?  All it's doing is
> preventing the loop from being preempted at that point; but there
> doesn't seem to be a good reason for that.  In fact, if an attacker
> could engineer a situation where large swaths could fail, it could use
> this to lock up the cpu for an unreasonable amount of time.

Yes, that could be an issue. It will go in v2

> 

> Everything else looks OK to me.
> 

If the changes requested by Tamas are also ok with you then I will have 
them all go in v2.

Alex

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.