[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] x86/PoD: correctly handle non-order-0 decrease-reservation requests
>>> On 04.12.17 at 16:58, <andrew.cooper3@xxxxxxxxxx> wrote: > On 04/12/17 11:06, Jan Beulich wrote: >> --- a/xen/common/memory.c >> +++ b/xen/common/memory.c >> @@ -284,13 +284,15 @@ int guest_remove_page(struct domain *d, >> >> #ifdef CONFIG_X86 >> mfn = get_gfn_query(d, gmfn, &p2mt); >> + if ( unlikely(p2mt == p2m_invalid) || unlikely(p2mt == p2m_mmio_dm) ) >> + return -ENOENT; > > Newline. > >> if ( unlikely(p2m_is_paging(p2mt)) ) >> { >> rc = guest_physmap_remove_page(d, _gfn(gmfn), mfn, 0); > > Somewhere in this callchain, you truncate unsigned long to int. It is > ok (I think) at the moment because ORDER_1G fits within int, but is > liable to break subtly in the future. I don't understand this: I can't seem to see gfn or mfn to be truncated (and that would be a pre-existing problem then afaict). And passing order values as unsigned long is plain pointless - even with 64-bit frame numbers this can't exceed 64, i.e. is limited to a 6-bit value in practice. Please clarify what truncation you're suspecting. >> @@ -375,9 +373,10 @@ int guest_remove_page(struct domain *d, >> put_page(page); >> >> put_page(page); >> + out_put_gfn: __maybe_unused > > What is this annotation for? For the !CONFIG_X86 case. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |