|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 for-4.16] xen/arm: allocate_bank_memory: don't create memory banks of size zero
Hi Stefano, On 10/11/2021 20:55, Stefano Stabellini wrote: From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx> allocate_bank_memory can be called with a tot_size of zero, as an example see the implementation of allocate_memory which can call allocate_bank_memory with a tot_size of zero for the second memory bank. If tot_size == 0, don't create an empty memory bank, just return immediately without error. Otherwise a zero-size memory bank will be added to the domain device tree. Note that Linux is known to be able to cope with zero-size memory banks, and Xen more recently gained the ability to do so as well (5a37207df520 "xen/arm: bootfdt: Ignore empty memory bank"). However, there might be other non-Linux OSes that are not able to cope with empty memory banks as well as Linux (and now Xen). It would be more robust to avoid zero-size memory banks unless required. Moreover, the code to find empty address regions in make_hypervisor_node in Xen is not able to cope with empty memory banks today and would result in a Xen crash. This is only a latent bug because make_hypervisor_node is only called for Dom0 at present and allocate_memory is only called for DomU at the moment. (But if make_hypervisor_node was to be called for a DomU, then the Xen crash would become manifest.) As also mentionned by Oleksandr, I don't think make_hypervisor_node() could work as-is for DomU because we are not re-using the host memory layout (yet). Instead, we would need a logic similar to the one we use in libxl. That said, it makes easier to reason if all the memory banks are non-zero. Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx> --- Changes in v2: - improve commit message - add in-code comment In regards to inclusion in 4.16. If we don't fix this issue in 4.16, default usage of Xen+Linux won't be affected. However: - Non-Linux OSes that cannot cope with zero-size memory banks could error out. I am not aware of any but there are so many out there in embedded it is impossible to tell. I agree this is the main concern. Although, this not a new bug has been present for 3 years now. - downstream Xen calling make_hypervisor_node for DomUs will crash For this and ... - future Xen calling make_hypervisor_node for DomUs will have to make sure to fix this anyway ... this see above.
-- Julien Grall
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |