| commit 9f8d8a610dc50f39923e42c44a9b97148e254406 | |
| Author: Kalesh Singh <kaleshsingh@google.com> | |
| Date: Sun Oct 13 11:48:39 2024 -0700 | |
| ltp: syscalls: msync: Fix pagemap index | |
| Android x86_64 16KiB page size emulators, only emulate the page size to | |
| user space. The kernel however is still a 4KiB base page size kernel. | |
| When indexing into pagemap, use the kernel page size. | |
| This is effectively a no-op on all other targets. | |
| Bug: 366098040 | |
| Test: atest vts_ltp_test_x86_64:syscalls.msync04_64bit#syscalls.msync04_64bit | |
| Change-Id: I6a15e68389e36ab519e08bfa88c5c7ad4ea95210 | |
| Signed-off-by: Kalesh Singh <kaleshsingh@google.com> | |
| diff --git a/testcases/kernel/syscalls/msync/msync04.c b/testcases/kernel/syscalls/msync/msync04.c | |
| index 72ddc27a4..645201ee5 100644 | |
| --- a/testcases/kernel/syscalls/msync/msync04.c | |
| +++ b/testcases/kernel/syscalls/msync/msync04.c | |
| @@ -17,6 +17,7 @@ | |
| #define _GNU_SOURCE | |
| #include <errno.h> | |
| #include "tst_test.h" | |
| +#include "pgsize_helpers.h" | |
| static int test_fd; | |
| static char *mmaped_area; | |
| @@ -31,7 +32,7 @@ static uint64_t get_dirty_bit(void *data) | |
| uint64_t pagemap_entry, pageflag_entry, pfn, index; | |
| addr = (unsigned long)data; | |
| - index = (addr / pagesize) * sizeof(uint64_t); | |
| + index = (addr / kernel_page_size()) * sizeof(uint64_t); | |
| pagemap_fd = SAFE_OPEN("/proc/self/pagemap", O_RDONLY); | |
| SAFE_LSEEK(pagemap_fd, index, SEEK_SET); | |
| SAFE_READ(1, pagemap_fd, &pagemap_entry, sizeof(pagemap_entry)); |