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_BANKS
You 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;
(That's because it is impossible to get to nr_banks > NR_MEM_BANKS.)
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel