[U-Boot] [PATCH 06/21] sandbox: Zero the ram buffer on startup

Simon Glass sjg at chromium.org
Sat Nov 24 04:29:29 UTC 2018


At present the RAM buffer is not inited unless it is read from a file,
likely produced by an earlier phase of U-Boot. This causes valgrind
warnings whenever the RAM buffer is used. Correct this by initing it if
needed.

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

 arch/sandbox/cpu/start.c         | 7 +++++++
 arch/sandbox/include/asm/state.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index b1566a81435..2f5e6e95182 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -180,6 +180,7 @@ static int sandbox_cmdline_cb_memory(struct sandbox_state *state,
 		printf("Failed to read RAM buffer '%s': %d\n", arg, err);
 		return err;
 	}
+	state->ram_buf_read = true;
 
 	return 0;
 }
@@ -301,6 +302,12 @@ int board_run_command(const char *cmdline)
 
 static void setup_ram_buf(struct sandbox_state *state)
 {
+	/* Zero the RAM buffer if we didn't read it, to keep valgrind happy */
+	if (!state->ram_buf_read) {
+		memset(state->ram_buf, '\0', state->ram_size);
+		printf("clear %p %x\n", state->ram_buf, state->ram_size);
+	}
+
 	gd->arch.ram_buf = state->ram_buf;
 	gd->ram_size = state->ram_size;
 }
diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h
index 8fabe70a86d..5a144851025 100644
--- a/arch/sandbox/include/asm/state.h
+++ b/arch/sandbox/include/asm/state.h
@@ -90,6 +90,7 @@ struct sandbox_state {
 	bool show_test_output;		/* Don't suppress stdout in tests */
 	int default_log_level;		/* Default log level for sandbox */
 	bool show_of_platdata;		/* Show of-platdata in SPL */
+	bool ram_buf_read;		/* true if we read the RAM buffer */
 
 	/* Pointer to information for each SPI bus/cs */
 	struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
-- 
2.20.0.rc0.387.gc7a69e6b6c-goog



More information about the U-Boot mailing list