diff options
| author | Leslie Zhai <zhaixiang@loongson.cn> | 2025-05-07 21:36:37 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-07 15:36:37 +0200 |
| commit | 11513d662daf7a584b307eb3e27a512edef711b5 (patch) | |
| tree | 0264d1db6f81492a51d21c1968cb9d529cce4e43 /src | |
| parent | 6487ee0edafbcd0542927b95af9c4bae3522ed4d (diff) | |
| download | box64-11513d662daf7a584b307eb3e27a512edef711b5.tar.gz box64-11513d662daf7a584b307eb3e27a512edef711b5.zip | |
[NON4KPAGE] Fix AllocLoadElfMemory multiblocks wrong alignment (#2608) (#2609)
Diffstat (limited to 'src')
| -rw-r--r-- | src/elfs/elfloader.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index b8fbef38..f05dd219 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -299,8 +299,8 @@ int AllocLoadElfMemory(box64context_t* context, elfheader_t* head, int mainbin) uint8_t prot = ((e->p_flags & PF_R)?PROT_READ:0)|((e->p_flags & PF_W)?PROT_WRITE:0)|((e->p_flags & PF_X)?PROT_EXEC:0); // check if alignment is correct uintptr_t balign = head->multiblocks[n].align-1; - if(balign<4095) balign = 4095; - head->multiblocks[n].asize = (e->p_memsz+(e->p_paddr&balign)+4095)&~4095; + if (balign < (box64_pagesize - 1)) balign = box64_pagesize - 1; + head->multiblocks[n].asize = (e->p_memsz + (e->p_paddr & balign) + (box64_pagesize - 1)) & ~(box64_pagesize - 1); int try_mmap = 1; if(e->p_paddr&balign) try_mmap = 0; |