Re: [PATCH v2] of: Fix reserved-memory overlap detection

From: Rob Herring
Date: Fri Oct 23 2020 - 12:52:19 EST


On Wed, 21 Oct 2020 11:53:59 +0200, Vincent Whitchurch wrote:
> The reserved-memory overlap detection code fails to detect overlaps if
> either of the regions starts at address 0x0. The code explicitly checks
> for and ignores such regions, apparently in order to ignore dynamically
> allocated regions which have an address of 0x0 at this point. These
> dynamically allocated regions also have a size of 0x0 at this point, so
> fix this by removing the check and sorting the dynamically allocated
> regions ahead of any static regions at address 0x0.
>
> For example, there are two overlaps in this case but they are not
> currently reported:
>
> foo@0 {
> reg = <0x0 0x2000>;
> };
>
> bar@0 {
> reg = <0x0 0x1000>;
> };
>
> baz@1000 {
> reg = <0x1000 0x1000>;
> };
>
> quux {
> size = <0x1000>;
> };
>
> but they are after this patch:
>
> OF: reserved mem: OVERLAP DETECTED!
> bar@0 (0x00000000--0x00001000) overlaps with foo@0 (0x00000000--0x00002000)
> OF: reserved mem: OVERLAP DETECTED!
> foo@0 (0x00000000--0x00002000) overlaps with baz@1000 (0x00001000--0x00002000)
>
> Signed-off-by: Vincent Whitchurch <vincent.whitchurch@xxxxxxxx>
> ---
> v2: Fix handling of dynamically allocated regions.
>
> drivers/of/of_reserved_mem.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>

Applied, thanks!