]> git.baikalelectronics.ru Git - kernel.git/commit
of: Fix reserved-memory overlap detection
authorVincent Whitchurch <vincent.whitchurch@axis.com>
Wed, 21 Oct 2020 09:53:59 +0000 (11:53 +0200)
committerRob Herring <robh@kernel.org>
Mon, 26 Oct 2020 01:37:55 +0000 (20:37 -0500)
commitc7a126b53e5710f2fae3eb5759bd43b9da5f491b
tree81614bb5e6b7be61a51ef03fd66f75632772b7d5
parentfaa140c684ad44cc3166d17f40bd6130b24dd9e7
of: Fix reserved-memory overlap detection

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@axis.com>
Link: https://lore.kernel.org/r/ded6fd6b47b58741aabdcc6967f73eca6a3f311e.1603273666.git-series.vincent.whitchurch@axis.com
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/of_reserved_mem.c