All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Vincent Whitchurch <vincent.whitchurch@axis.com>,
	Rob Herring <robh@kernel.org>, Sasha Levin <sashal@kernel.org>,
	devicetree@vger.kernel.org
Subject: [PATCH AUTOSEL 5.4 07/24] of: Fix reserved-memory overlap detection
Date: Mon,  2 Nov 2020 20:19:50 -0500	[thread overview]
Message-ID: <20201103012007.183429-7-sashal@kernel.org> (raw)
In-Reply-To: <20201103012007.183429-1-sashal@kernel.org>

From: Vincent Whitchurch <vincent.whitchurch@axis.com>

[ Upstream commit ca05f33316559a04867295dd49f85aeedbfd6bfd ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/of/of_reserved_mem.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index 6bd610ee2cd73..3fb5d8caffd53 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -200,6 +200,16 @@ static int __init __rmem_cmp(const void *a, const void *b)
 	if (ra->base > rb->base)
 		return 1;
 
+	/*
+	 * Put the dynamic allocations (address == 0, size == 0) before static
+	 * allocations at address 0x0 so that overlap detection works
+	 * correctly.
+	 */
+	if (ra->size < rb->size)
+		return -1;
+	if (ra->size > rb->size)
+		return 1;
+
 	return 0;
 }
 
@@ -217,8 +227,7 @@ static void __init __rmem_check_for_overlap(void)
 
 		this = &reserved_mem[i];
 		next = &reserved_mem[i + 1];
-		if (!(this->base && next->base))
-			continue;
+
 		if (this->base + this->size > next->base) {
 			phys_addr_t this_end, next_end;
 
-- 
2.27.0


  parent reply	other threads:[~2020-11-03  1:20 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-03  1:19 [PATCH AUTOSEL 5.4 01/24] ARM: dts: sun4i-a10: fix cpu_alert temperature Sasha Levin
2020-11-03  1:19 ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 02/24] arm64: dts: meson-axg: add USB nodes Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  8:55   ` Neil Armstrong
2020-11-03  8:55     ` Neil Armstrong
2020-11-03  8:55     ` Neil Armstrong
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 03/24] arm64: dts: meson-axg-s400: enable USB OTG Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  8:55   ` Neil Armstrong
2020-11-03  8:55     ` Neil Armstrong
2020-11-03  8:55     ` Neil Armstrong
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 04/24] arm64: dts: meson: add missing g12 rng clock Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 05/24] arm64: dts: amlogic: meson-g12: use the G12A specific dwmac compatible Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  5:53   ` Martin Blumenstingl
2020-11-03  5:53     ` Martin Blumenstingl
2020-11-03  5:53     ` Martin Blumenstingl
2020-11-08 13:21     ` Sasha Levin
2020-11-08 13:21       ` Sasha Levin
2020-11-08 13:21       ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 06/24] x86/kexec: Use up-to-dated screen_info copy to fill boot params Sasha Levin
2020-11-03  1:19 ` Sasha Levin [this message]
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 08/24] drm/sun4i: frontend: Rework a bit the phase data Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 09/24] drm/sun4i: frontend: Reuse the ch0 phase for RGB formats Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 10/24] drm/sun4i: frontend: Fix the scaler phase on A33 Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 11/24] blk-cgroup: Fix memleak on error path Sasha Levin
     [not found] ` <20201103012007.183429-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2020-11-03  1:19   ` [PATCH AUTOSEL 5.4 12/24] blk-cgroup: Pre-allocate tree node on blkg_conf_prep Sasha Levin
2020-11-03  1:19     ` Sasha Levin
2020-11-03  1:20   ` [PATCH AUTOSEL 5.4 22/24] drm/nouveau/nouveau: fix the start/end range for migration Sasha Levin
2020-11-03  1:20     ` Sasha Levin
2020-11-03  1:20     ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 13/24] scsi: core: Don't start concurrent async scan on same host Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 14/24] drm/amdgpu: add DID for navi10 blockchain SKU Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 15/24] scsi: ibmvscsi: Fix potential race after loss of transport Sasha Levin
2020-11-03  1:19   ` Sasha Levin
2020-11-03  1:19 ` [PATCH AUTOSEL 5.4 16/24] vsock: use ns_capable_noaudit() on socket create Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 17/24] nvme-rdma: handle unexpected nvme completion data length Sasha Levin
2020-11-03  1:20   ` Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 18/24] nvmet: fix a NULL pointer dereference when tracing the flush command Sasha Levin
2020-11-03  1:20   ` Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 19/24] drm/vc4: drv: Add error handding for bind Sasha Levin
2020-11-03  1:20   ` Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 20/24] ACPI: NFIT: Fix comparison to '-ENXIO' Sasha Levin
2020-11-03  1:20   ` Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 21/24] usb: cdns3: gadget: suspicious implicit sign extension Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 23/24] drm/nouveau/gem: fix "refcount_t: underflow; use-after-free" Sasha Levin
2020-11-03  1:20   ` Sasha Levin
2020-11-03  1:20 ` [PATCH AUTOSEL 5.4 24/24] arm64/smp: Move rcu_cpu_starting() earlier Sasha Levin
2020-11-03  1:20   ` Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201103012007.183429-7-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=vincent.whitchurch@axis.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.