All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] ARM: Fix overflow in MMU setup
@ 2014-08-03 23:45 Marek Vasut
  2014-08-30 15:14 ` [U-Boot] " Tom Rini
  0 siblings, 1 reply; 2+ messages in thread
From: Marek Vasut @ 2014-08-03 23:45 UTC (permalink / raw)
  To: u-boot

The patch fixes a corner case where adding size to DRAM start resulted
in a value (1 << 32), which in turn overflew the u32 computation, which
resulted in 0 and it therefore prevented correct setup of the MMU tables.

The addition of DRAM bank start and it's size can end up right at the end
of the address space in the special case of a machine with enough memory.
To prevent this overflow, shift the start and size separately and add them
only after they were shifted.

Hopefully, we only have systems in tree which have DRAM size aligned to
1MiB boundary. If not, this patch would break such systems. On the other
hand, such system would be broken by design anyway.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
 arch/arm/lib/cache-cp15.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c
index 5fdfdbf..3e62d58 100644
--- a/arch/arm/lib/cache-cp15.c
+++ b/arch/arm/lib/cache-cp15.c
@@ -69,7 +69,7 @@ __weak void dram_bank_mmu_setup(int bank)
 
 	debug("%s: bank: %d\n", __func__, bank);
 	for (i = bd->bi_dram[bank].start >> 20;
-	     i < (bd->bi_dram[bank].start + bd->bi_dram[bank].size) >> 20;
+	     i < (bd->bi_dram[bank].start >> 20) + (bd->bi_dram[bank].size >> 20);
 	     i++) {
 #if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
 		set_section_dcache(i, DCACHE_WRITETHROUGH);
-- 
2.0.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [U-Boot] ARM: Fix overflow in MMU setup
  2014-08-03 23:45 [U-Boot] [PATCH] ARM: Fix overflow in MMU setup Marek Vasut
@ 2014-08-30 15:14 ` Tom Rini
  0 siblings, 0 replies; 2+ messages in thread
From: Tom Rini @ 2014-08-30 15:14 UTC (permalink / raw)
  To: u-boot

On Mon, Aug 04, 2014 at 01:45:46AM +0200, Marek Vasut wrote:

> The patch fixes a corner case where adding size to DRAM start resulted
> in a value (1 << 32), which in turn overflew the u32 computation, which
> resulted in 0 and it therefore prevented correct setup of the MMU tables.
> 
> The addition of DRAM bank start and it's size can end up right at the end
> of the address space in the special case of a machine with enough memory.
> To prevent this overflow, shift the start and size separately and add them
> only after they were shifted.
> 
> Hopefully, we only have systems in tree which have DRAM size aligned to
> 1MiB boundary. If not, this patch would break such systems. On the other
> hand, such system would be broken by design anyway.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140830/a1488a2c/attachment.pgp>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-08-30 15:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-03 23:45 [U-Boot] [PATCH] ARM: Fix overflow in MMU setup Marek Vasut
2014-08-30 15:14 ` [U-Boot] " Tom Rini

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.