|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Problem about dump-core
On 09/17/2014 09:11 AM, Ian Campbell wrote:
> On Wed, 2014-09-17 at 08:50 +0800, Wen Congyang wrote:
>
>> Yes, we can check it more earlier. If the 4 error bits are set, is it a valid
>> mfn?
>
> It doesn't really matter, since valid or not you can't pass such an mfn
> to this interface because of the error handling behaviour.
No, the user may pass more than one mfn, and part of them are ~0UL:
==============================================
for ( i = 0; i < j; i++ )
{
unsigned long pfn, pagetype;
pfn = pagebuf->pfn_types[i + curbatch] &
~XEN_DOMCTL_PFINFO_LTAB_MASK;
pagetype = pagebuf->pfn_types[i + curbatch] &
XEN_DOMCTL_PFINFO_LTAB_MASK;
if ( pagetype != XEN_DOMCTL_PFINFO_XTAB
&& ctx->p2m[pfn] == (INVALID_P2M_ENTRY-1) )
{
/* We just allocated a new mfn above; update p2m */
ctx->p2m[pfn] = ctx->p2m_batch[nr_mfns++];
ctx->nr_pfns++;
}
/* setup region_mfn[] for batch map, if necessary.
* For HVM guests, this interface takes PFNs, not MFNs */
if ( pagetype == XEN_DOMCTL_PFINFO_XTAB
|| pagetype == XEN_DOMCTL_PFINFO_XALLOC )
region_mfn[i] = ~0UL; /* map will fail but we don't care */
else
region_mfn[i] = ctx->hvm ? pfn : ctx->p2m[pfn];
}
/* Map relevant mfns */
pfn_err = calloc(j, sizeof(*pfn_err));
if ( pfn_err == NULL )
{
PERROR("allocation for pfn_err failed");
return -1;
}
region_base = xc_map_foreign_bulk(
xch, dom, PROT_WRITE, region_mfn, pfn_err, j);
==============================================
The above codes are the function apply_batch(). In this case, we cannot
return NULL.
I think we should check the mfn, and if it is large mfn, and some error bits
are set, pass ~0UL to ioctl(), and mark this mfn is mapped failed in err[].
Thanks
Wen Congyang
>
> Ian.
>
> .
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |