devmem: use mmap64 replace mmap

xiechengliang xiechengliang1 at huawei.com
Mon Sep 27 14:06:15 UTC 2021


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 <xiechengliang1 at huawei.com<mailto:xiechengliang1 at huawei.com>>
---
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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20210927/13026c44/attachment.html>


More information about the busybox mailing list