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

Reply via email to