blob: 85b9f1cd4329693c498b35ea864f3315ba62784f [file]
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));