This should be solvable by building with CONFIG_LFS=y
- this makes off_t 64-bit and makes all operations
on files 64-bit aware.

Can you try that?



On Mon, Sep 27, 2021 at 4:06 PM xiechengliang <[email protected]> wrote:
>
> 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]>
>
> ---
>
> 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
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to