• Vincent Whitchurch's avatar
    of: Fix reserved-memory overlap detection · ca05f333
    Vincent Whitchurch authored
    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: default avatarVincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/ded6fd6b47b58741aabdcc6967f73eca6a3f311e.1603273666.git-series.vincent.whitchurch@axis.comSigned-off-by: default avatarRob Herring <robh@kernel.org>
    ca05f333
of_reserved_mem.c 11.2 KB