env_nand: fix incorrect size parameter to ALLOC_CACHE_ALIGN_BUFFER
authorStephen Warren <swarren@nvidia.com>
Fri, 7 Sep 2012 09:15:33 +0000 (09:15 +0000)
committerTom Rini <trini@ti.com>
Tue, 18 Sep 2012 19:01:51 +0000 (12:01 -0700)
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>
common/env_nand.c

index e6354728fbc97e826501da1742d9496a8d9d51e9..79e803370505dd8e996621d56757e44690817662 100644 (file)
@@ -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;