Hi Ralph,

On 09.09.20 03:33, Ralph Siemsen wrote:
The bitflip test uses two equal sized memory buffers. This is achived
by splitting the range of memory into two pieces. The address of the
second buffer was not correctly calulated, thus the bitflip test would

calculated

accessing memory beyond the end of the specified range.

A second problem arises because u-boot "mtest" command expects the
ending address to be inclusive. When computing (end - start) this
results in missing 1 byte of the requested length. The bitflip test in
turn misses the last word.

Fixes: 8e434cb705d463bc8cff935160e4fb4c77cb99ab ("cmd: mem: Add bitflip
memory test to alternate mtest")

Signed-off-by: Ralph Siemsen <ralph.siem...@linaro.org>
--
TODO/FIXME: maybe the ending address should be automatically aligned?

Change-Id: Ie641d04e731fc5bc6a3bbef914bf7fad136cdc94
---
  cmd/mem.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cmd/mem.c b/cmd/mem.c
index 9b97f7bf69..88e15b2d61 100644
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -988,8 +988,9 @@ static int do_mem_mtest(struct cmd_tbl *cmdtp, int flag, 
int argc,
                                break;
                        count += errs;
                        errs = test_bitflip_comparison(buf,
-                                                      buf + (end - start) / 2,
-                                                      (end - start) /
+                                                      buf + (end - start + 1) 
/ 2 /
+                                                      sizeof(unsigned long),
+                                                      (end - start + 1) / 2 /
                                                       sizeof(unsigned long));

Thanks for finding and fixing this:

Reviewed-by: Stefan Roese <s...@denx.de>

Perhaps you could assign a variable to make the lines a bit shorter:

                        half_size = (end - start + 1) / 2 /
                                sizeof(unsigned long);
                        errs = test_bitflip_comparison(buf,
                                                       buf + half_size,
                                                       half_size);

?

Thanks,
Stefan

Reply via email to