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

Re: [Xen-devel] [PATCH v6 02/12] xen: move XENMAPSPACE_grant_table code into grant_table.c



On 14/09/17 19:20, Julien Grall wrote:
> Hi Juergen,
> 
> On 13/09/17 16:46, Juergen Gross wrote:
>> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
>> index 00ff075bd9..a462ea7905 100644
>> --- a/xen/common/grant_table.c
>> +++ b/xen/common/grant_table.c
>> @@ -3608,6 +3608,44 @@ int mem_sharing_gref_to_gfn(struct grant_table
>> *gt, grant_ref_t ref,
>>   }
>>   #endif
>>   +int gnttab_map_frame(struct domain *d, unsigned long idx, gfn_t gfn,
>> +                     mfn_t *mfn)
>> +{
>> +    int rc = 0;
>> +    struct grant_table *gt = d->grant_table;
>> +
>> +    grant_write_lock(gt);
>> +
>> +    if ( gt->gt_version == 0 )
>> +        gt->gt_version = 1;
>> +
>> +    if ( gt->gt_version == 2 &&
>> +         (idx & XENMAPIDX_grant_table_status) )
>> +    {
>> +        idx &= ~XENMAPIDX_grant_table_status;
>> +        if ( idx < nr_status_frames(gt) )
>> +            *mfn = _mfn(virt_to_mfn(gt->status[idx]));
>> +        else
>> +            rc = -EINVAL;
>> +    }
>> +    else
>> +    {
>> +        if ( (idx >= nr_grant_frames(gt)) && (idx < max_grant_frames) )
>> +            gnttab_grow_table(d, idx + 1);
>> +
>> +        if ( idx < nr_grant_frames(gt) )
>> +            *mfn = _mfn(virt_to_mfn(gt->shared_raw[idx]));
>> +        else
>> +            rc = -EINVAL;
>> +    }
>> +
>> +    gnttab_set_frame_gfn(d, idx, gfn);
> 
> This code is slightly different compare to the ARM implementation. The
> gfn is now set even if the rc is non-zero (i.e invalid MFN on the ARM
> implementation).
> 
> So I think you need to protect gnttab_set_frame_gfn with if ( !rc ).

Right, thanks for noticing.


Juergen

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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