Correct map_sysmem() logic in do_mem_mw()
This function does not unmap what it maps. Correct it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
161d2e4e5b
commit
cc5e196e03
|
@ -165,7 +165,7 @@ static int do_mem_mw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
#endif
|
||||
ulong addr, count;
|
||||
int size;
|
||||
void *buf;
|
||||
void *buf, *start;
|
||||
ulong bytes;
|
||||
|
||||
if ((argc < 3) || (argc > 4))
|
||||
|
@ -197,7 +197,8 @@ static int do_mem_mw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
}
|
||||
|
||||
bytes = size * count;
|
||||
buf = map_sysmem(addr, bytes);
|
||||
start = map_sysmem(addr, bytes);
|
||||
buf = start;
|
||||
while (count-- > 0) {
|
||||
if (size == 4)
|
||||
*((u32 *)buf) = (u32)writeval;
|
||||
|
@ -211,7 +212,7 @@ static int do_mem_mw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
*((u8 *)buf) = (u8)writeval;
|
||||
buf += size;
|
||||
}
|
||||
unmap_sysmem(buf);
|
||||
unmap_sysmem(start);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue