U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Tom Rini <trini@konsulko.com>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Simon Glass <sjg@chromium.org>,
	Eddie James <eajames@linux.ibm.com>,
	Mattijs Korpershoek <mkorpershoek@baylibre.com>,
	Safae Ouajih <souajih@baylibre.com>
Subject: [PATCH 28/29] bootm: Add a function to check overlap
Date: Sat, 11 Nov 2023 17:09:13 -0700	[thread overview]
Message-ID: <20231112000923.73568-29-sjg@chromium.org> (raw)
In-Reply-To: <20231112000923.73568-1-sjg@chromium.org>

Move this code into a function to reduce code size and make it easier
to understand. Drop the unnecessary 0x to help a little with code size.

Use this in bootm_find_images()

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 boot/bootm.c | 51 ++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git a/boot/bootm.c b/boot/bootm.c
index 54e4b48e907c..a803b0749be0 100644
--- a/boot/bootm.c
+++ b/boot/bootm.c
@@ -467,6 +467,37 @@ static int bootm_find_os(const char *addr_fit)
 	return 0;
 }
 
+/**
+ * check_overlap() - Check if an image overlaps the OS
+ *
+ * @name: Name of image to check (used to print error)
+ * @base: Base address of image
+ * @end: End address of image (+1)
+ * @os_start: Start of OS
+ * @os_size: Size of OS in bytes
+ * Return: 0 if OK, -EXDEV if the image overlaps the OS
+ */
+static int check_overlap(const char *name, ulong base, ulong end,
+			 ulong os_start, ulong os_size)
+{
+	ulong os_end;
+
+	if (!base)
+		return 0;
+	os_end = os_start + os_size;
+
+	if ((base >= os_start && base < os_end) ||
+	    (end > os_start && end <= os_end) ||
+	    (base < os_start && end >= os_end)) {
+		printf("ERROR: %s image overlaps OS image (OS=%lx..%lx)\n",
+		       name, os_start, os_end);
+
+		return -EXDEV;
+	}
+
+	return 0;
+}
+
 int bootm_find_images(ulong img_addr, const char *conf_ramdisk,
 		      const char *conf_fdt, ulong start, ulong size)
 {
@@ -496,16 +527,8 @@ int bootm_find_images(ulong img_addr, const char *conf_ramdisk,
 	}
 
 	/* check if ramdisk overlaps OS image */
-	if (images.rd_start && (((ulong)images.rd_start >= start &&
-				 (ulong)images.rd_start < start + size) ||
-				((ulong)images.rd_end > start &&
-				 (ulong)images.rd_end <= start + size) ||
-				((ulong)images.rd_start < start &&
-				 (ulong)images.rd_end >= start + size))) {
-		printf("ERROR: RD image overlaps OS image (OS=0x%lx..0x%lx)\n",
-		       start, start + size);
+	if (check_overlap("RD", images.rd_start, images.rd_end, start, size))
 		return 1;
-	}
 
 	if (CONFIG_IS_ENABLED(OF_LIBFDT)) {
 		buf = map_sysmem(img_addr, 0);
@@ -519,15 +542,9 @@ int bootm_find_images(ulong img_addr, const char *conf_ramdisk,
 		}
 
 		/* check if FDT overlaps OS image */
-		if (images.ft_addr &&
-		    (((ulong)images.ft_addr >= start &&
-		      (ulong)images.ft_addr < start + size) ||
-		     ((ulong)images.ft_addr + images.ft_len >= start &&
-		      (ulong)images.ft_addr + images.ft_len < start + size))) {
-			printf("ERROR: FDT image overlaps OS image (OS=0x%lx..0x%lx)\n",
-			       start, start + size);
+		if (check_overlap("FDT", map_to_sysmem(images.ft_addr),
+				  images.ft_len, start, size))
 			return 1;
-		}
 
 		if (IS_ENABLED(CONFIG_CMD_FDT))
 			set_working_fdt_addr(map_to_sysmem(images.ft_addr));
-- 
2.42.0.869.gea05f2083d-goog


  parent reply	other threads:[~2023-11-12  0:26 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-12  0:08 [PATCH 00/29] bootm: Refactoring to reduce reliance on CMDLINE (part A) Simon Glass
2023-11-12  0:08 ` [PATCH 01/29] arm: x86: Drop discarding of command linker-lists Simon Glass
2023-11-15 19:55   ` Tom Rini
2023-11-12  0:08 ` [PATCH 02/29] mmc: env: Unify the U_BOOT_ENV_LOCATION conditions Simon Glass
2023-11-15 10:02   ` Heinrich Schuchardt
2023-11-19 14:49     ` Simon Glass
2023-11-21 18:12       ` Tom Rini
2023-11-12  0:08 ` [PATCH 03/29] treewide: Tidy up semicolon after command macros Simon Glass
2023-11-15 19:58   ` Tom Rini
2023-11-12  0:08 ` [PATCH 04/29] bootstd: Add missing header file from bootdev.h Simon Glass
2023-11-12  0:08 ` [PATCH 05/29] bootstd: Introduce programmable boot Simon Glass
2023-11-12  0:08 ` [PATCH 06/29] bootm: Drop arguments from bootm_start() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 07/29] bootm: Simplify arguments for bootm_pre_load() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 08/29] bootm: Move boot_get_kernel() higher in the file Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 09/29] image: Tidy up genimg_get_kernel_addr_fit() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 10/29] bootm: Reduce arguments to boot_get_kernel() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 11/29] image: Document error codes from fit_image_load() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 12/29] bootm: Adjust boot_get_kernel() to return an error Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 13/29] bootm: Use the error return from boot_get_kernel() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 14/29] bootstage: Drop BOOTSTAGE_ID_FIT_KERNEL_INFO Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 15/29] bootm: Move error printing out of boot_get_kernel() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 16/29] bootm: Reduce arguments to boot_find_os() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 17/29] bootm: Reduce arguments to boot_get_ramdisk() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 18/29] fdt: Allow use of fdt_support inside if() statements Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 19/29] bootm: Drop #ifdef in bootm_find_images() Simon Glass
2023-11-12  0:09 ` [PATCH 20/29] bootm: Pass image buffer to boot_get_fdt() Simon Glass
2023-11-12  0:09 ` [PATCH 21/29] bootm: Reduce arguments " Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 22/29] bootm: Reduce arguments to boot_get_fpga() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 23/29] bootm: Reduce arguments to boot_get_loadables() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 24/29] bootm: Simplify Android ramdisk addr in bootm_find_images() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 25/29] bootm: efi: Drop special call to bootm_find_other() Simon Glass
2023-11-12  0:09 ` [PATCH 26/29] bootm: optee: " Simon Glass
2023-11-12  0:09 ` [PATCH 27/29] bootm: Adjust the parameters of bootm_find_images() Simon Glass
2023-11-15 22:38   ` Tom Rini
2023-11-16  1:42     ` Simon Glass
2023-11-16  1:47       ` Tom Rini
2023-11-16  1:56         ` Simon Glass
2023-11-16  2:07           ` Tom Rini
2023-11-16  2:35             ` Simon Glass
2023-11-12  0:09 ` Simon Glass [this message]
2023-11-15 22:38   ` [PATCH 28/29] bootm: Add a function to check overlap Tom Rini
2023-11-12  0:09 ` [PATCH 29/29] bootm: Reduce arguments to bootm_find_other() Simon Glass
2023-11-15 22:38   ` Tom Rini

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=20231112000923.73568-29-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=eajames@linux.ibm.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=mkorpershoek@baylibre.com \
    --cc=souajih@baylibre.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox