From 7a3eec2b4d9dbb9533acfb271dbe91afa0727c8e Mon Sep 17 00:00:00 2001 From: Tomas Vanek Date: Tue, 18 Dec 2018 17:17:33 +0100 Subject: target algo: do not write reg_param if direction is PARAM_IN Without this change xxx_start_algorithm() writes all register parameters no matter of their direction. It usually results in writing of uninitialized reg_params[].value - possibly reported by valgrind. While on it fix the wrong parameter direction in kinetis_disable_wdog_algo(). This bug did not have any impact because of unconditional write of reg_params. Change-Id: Ia9c6a7b37f77d5eb6e5f5463012dddd50471742b Signed-off-by: Tomas Vanek Reviewed-on: http://openocd.zylin.com/4813 Tested-by: jenkins Reviewed-by: Antonio Borneo Reviewed-by: Matthias Welwarsky --- src/target/armv7m.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/target/armv7m.c') diff --git a/src/target/armv7m.c b/src/target/armv7m.c index a1962fe..ecca0e7 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -388,6 +388,9 @@ int armv7m_start_algorithm(struct target *target, } for (int i = 0; i < num_reg_params; i++) { + if (reg_params[i].direction == PARAM_IN) + continue; + struct reg *reg = register_get_by_name(armv7m->arm.core_cache, reg_params[i].reg_name, 0); /* uint32_t regvalue; */ -- cgit v1.1