[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 |