Subject: [PATCH] devmem: The type of the physical address to be accessed by devmem is off_t, when the 32-bit Linux kernel support lpae, the physical address can exceed 4G, and accessing or modifying the address exceeding 4G will cause truncation.
function old new delta do_cmd 127 127 +0 Signed-off-by: xiechengliang <[email protected]<mailto:[email protected]>> --- miscutils/devmem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/miscutils/devmem.c b/miscutils/devmem.c index f9f0276bc..594bb440c 100644 --- a/miscutils/devmem.c +++ b/miscutils/devmem.c @@ -30,7 +30,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv) void *map_base, *virt_addr; uint64_t read_result; uint64_t writeval = writeval; /* for compiler */ - off_t target; + uint64_t target; unsigned page_size, mapped_size, offset_in_page; int fd; unsigned width = 8 * sizeof(int); @@ -82,12 +82,12 @@ int devmem_main(int argc UNUSED_PARAM, char **argv) * Must map two pages to make it possible: */ mapped_size *= 2; } - map_base = mmap(NULL, + map_base = mmap64(NULL, mapped_size, argv[3] ? (PROT_READ | PROT_WRITE) : PROT_READ, MAP_SHARED, fd, - target & ~(off_t)(page_size - 1)); + target & ~(uint64_t)(page_size - 1)); if (map_base == MAP_FAILED) bb_simple_perror_msg_and_die("mmap"); -- 2.12.3
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
