set_p2m_entry() ignores halfway errors.
It should return 0 on error.
Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
Acked-by: Tim Deegan <Tim.Deegan@citrix.com>
{
unsigned long todo = 1ul << page_order;
unsigned int order;
- int rc = 0;
+ int rc = 1;
while ( todo )
{
9 : 0;
else
order = 0;
- rc = d->arch.p2m->set_entry(d, gfn, mfn, order, p2mt);
+ if ( !d->arch.p2m->set_entry(d, gfn, mfn, order, p2mt) )
+ rc = 0;
gfn += 1ul << order;
if ( mfn_x(mfn) != INVALID_MFN )
mfn = _mfn(mfn_x(mfn) + (1ul << order));