From: Stephen Warren <swarren@nvidia.com>
Date: Fri, 7 Sep 2012 09:15:33 +0000 (+0000)
Subject: env_nand: fix incorrect size parameter to ALLOC_CACHE_ALIGN_BUFFER
X-Git-Tag: v2025.01-rc5-pxa1908~17288
X-Git-Url: http://git.dujemihanovic.xyz/img/html/static/login.html?a=commitdiff_plain;h=78b2de802f5f996d1e6d9383d1e05194351c429b;p=u-boot.git

env_nand: fix incorrect size parameter to ALLOC_CACHE_ALIGN_BUFFER

The third parameter to ALLOC_CACHE_ALIGN_BUFFER is not size (as named),
but rather count (number of elements of the type to allocate). The
current code ends up allocating one copy of env_t for each byte in its
size, which quite possibly ends up overflowing RAM.

This fixes a bug in commit 3801a15 "env_nand: align NAND buffers".

Reported-by: Prabhakar Lad <prabhakar.csengg@gmail.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reported-by: Prabhakar Lad <prabhakar.lad@ti.com>
---

diff --git a/common/env_nand.c b/common/env_nand.c
index e6354728fb..79e8033705 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -226,7 +226,7 @@ int saveenv(void)
 int saveenv(void)
 {
 	int	ret = 0;
-	ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, sizeof(env_t));
+	ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
 	ssize_t	len;
 	char	*res;
 	nand_erase_options_t nand_erase_options;