[PATCH 03/11] boot: imagemap: correct the lookup guard rationale
Daniel Golle
daniel at makrotopia.org
Wed Oct 14 01:39:03 PDT 2026
The comment on imagemap_lookup() attributes the need for its second
guard to ulong and loff_t sharing a rank on LP64. loff_t is a signed
long long on every target U-Boot builds for, so it never shares a rank
with ulong on ILP32, and the guard is needed regardless: the comparison
is against an unsigned @size, so an underflowing subtraction makes any
range look like it fits.
State the actual reason.
Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
boot/imagemap.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/boot/imagemap.c b/boot/imagemap.c
index b004aa1644b..e7222d58c93 100644
--- a/boot/imagemap.c
+++ b/boot/imagemap.c
@@ -72,10 +72,10 @@ void *imagemap_lookup(struct udevice *dev, loff_t img_offset, ulong size)
*
* 2) img_offset - r->img_offset <= r->size
* The offset into the region does not exceed the
- * region size. This guard is essential: without it,
- * the subtraction in (3) wraps to a huge value on
- * LP64 where ulong and loff_t have the same rank
- * and the arithmetic is performed as unsigned.
+ * region size. This guard is essential: @size is
+ * unsigned, so without it the subtraction in (3)
+ * wraps to a huge value and every range appears to
+ * fit.
*
* 3) size <= r->size - (img_offset - r->img_offset)
* The requested range fits in the remaining space.
--
2.56.0
More information about the openwrt-devel
mailing list