Commit b4fe0c8c authored by jason.zeng's avatar jason.zeng Committed by Chris Ball
Browse files

fix ENH_START_ADDR overflow



Fix enh_start_addr overflow when converting emmc enh_area which will
cause do_enh_area_set failure.
Signed-off-by: default avatarjason.zeng <jasonzvz@gmail.com>
Signed-off-by: default avatarChris Ball <chris@printf.net>
parent 7bcad171
...@@ -1152,7 +1152,7 @@ int do_enh_area_set(int nargs, char **argv) ...@@ -1152,7 +1152,7 @@ int do_enh_area_set(int nargs, char **argv)
enh_size_mult = (length_kib + align/2l) / align; enh_size_mult = (length_kib + align/2l) / align;
enh_start_addr = start_kib * 1024 / (is_blockaddresed(ext_csd) ? 512 : 1); enh_start_addr = start_kib * (1024 / (is_blockaddresed(ext_csd) ? 512 : 1));
enh_start_addr /= align; enh_start_addr /= align;
enh_start_addr *= align; enh_start_addr *= align;
...@@ -1695,9 +1695,9 @@ int do_read_extcsd(int nargs, char **argv) ...@@ -1695,9 +1695,9 @@ int do_read_extcsd(int nargs, char **argv)
(ext_csd[EXT_CSD_ENH_START_ADDR_1] << 8) | (ext_csd[EXT_CSD_ENH_START_ADDR_1] << 8) |
ext_csd[EXT_CSD_ENH_START_ADDR_0]; ext_csd[EXT_CSD_ENH_START_ADDR_0];
printf("Enhanced User Data Start Address" printf("Enhanced User Data Start Address"
" [ENH_START_ADDR]: 0x%06x\n", regl); " [ENH_START_ADDR]: 0x%08x\n", regl);
printf(" i.e. %lu bytes offset\n", (is_blockaddresed(ext_csd) ? printf(" i.e. %llu bytes offset\n", (is_blockaddresed(ext_csd) ?
512l : 1l) * regl); 512ll : 1ll) * regl);
/* A441]: reserved [135] */ /* A441]: reserved [135] */
printf("Bad Block Management mode" printf("Bad Block Management mode"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment