|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 2/7] xen/arm: make process_memory_node a device_tree_node_func
Hi Volodymyr, On 15/08/2019 13:14, Volodymyr Babchuk wrote: Julien Grall writes:On 15/08/2019 12:24, Julien Grall wrote:Hi Volodymyr, On 15/08/2019 12:20, Volodymyr Babchuk wrote:Hi Stefano, Stefano Stabellini writes:On Tue, 13 Aug 2019, Volodymyr Babchuk wrote:@@ -162,6 +156,10 @@ static void __init process_memory_node(const void *fdt, int node, bootinfo.mem.bank[bootinfo.mem.nr_banks].size = size; bootinfo.mem.nr_banks++; } + + if ( bootinfo.mem.nr_banks == NR_MEM_BANKS ) + return -ENOSPC;Are you sure that this logic is correct? For example, if NR_MEM_BANKS is 1, and we have exactly one memory node in device tree, this function will fail. But it should not. I think you want this condition: bootinfo.mem.nr_banks > NR_MEM_BANKSYou are right, if NR_MEM_BANKS is 1 and we have 1 memory node in device tree the code would return an error while actually it is normal. I think the right check would be: if ( i < banks && bootinfo.mem.nr_banks == NR_MEM_BANKS ) return -ENOSPC; I am afraid this would not be correct. It is allowed to have multiple memory nodes in the device-tree. This function only deal with one node at the times. In particular banks is the number of regions described in the node. With the check you suggest, you would only catch the case where a node contain more banks than supported. It does not tell you whether there are enough space left in mem.bank[...] to cater the regions described by the node. So we need the check suggested by Stefano. Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |