Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c92d839 authored by Michael Ellerman's avatar Michael Ellerman Committed by Mitchel Humpherys
Browse files

of: Fix comparison of reserved memory regions



In order to check for overlapping reserved memory regions, we first need
to sort the array of memory regions. This is implemented using sort(),
and a custom comparison function __rmem_cmp().

Unfortunatley __rmem_cmp() doesn't work in all cases. Because the two
base values are phys_addr_t, they may be u64 on some platforms, in which
case subtracting one from the other and then (implicitly) casting to int
does not give us the -ve/0/+ve value we need.

This leads to incorrect reports about overlaps, eg:

  ibm,slw-image@1ffe600000 (0x0000001ffe600000--0x0000001ffe700000) overlaps with
  ibm,firmware-allocs-memory@1000000000 (0x0000001000000000--0x0000001000dc0200)

Fix it by just doing the standard double if and return 0 logic.

Change-Id: I7e39ad6c352c44527897a4ab15fc904a4fd5c42f
Fixes: ae1add247bf8 ("of: Check for overlap in reserved memory regions")
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Git-commit: 9eb8cd2b0780bca0719e754e7bdcf5f368f001bd
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarMitchel Humpherys <mitchelh@codeaurora.org>
parent 7427cd00
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment