|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |