From: Ackerley Tng <[email protected]>

Port verification logic from libhugetlbfs' tests/readback.c.

Iterate using an unsigned int pointer instead of a char pointer, which
enables testing against a greater range of stored values beyond [0, 255].

Signed-off-by: Ackerley Tng <[email protected]>
---
 tools/testing/selftests/mm/hugepage-mmap.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/mm/hugepage-mmap.c 
b/tools/testing/selftests/mm/hugepage-mmap.c
index dd9fccb209b10..a7d4a3eba3dd7 100644
--- a/tools/testing/selftests/mm/hugepage-mmap.c
+++ b/tools/testing/selftests/mm/hugepage-mmap.c
@@ -45,7 +45,7 @@ enum fd_kind {
 FIXTURE(hugepage_mmap)
 {
        int fd;
-       char *addr;
+       unsigned int *addr;
        char mount_dir[PATH_MAX];
 };
 
@@ -122,19 +122,21 @@ FIXTURE_TEARDOWN(hugepage_mmap)
        }
 }
 
+#define RANDOM_CONSTANT 0x1234ABCD
+
 TEST_F(hugepage_mmap, read_write)
 {
        unsigned long i;
 
-       TH_LOG("First hex is %x", *((unsigned int *)self->addr));
+       TH_LOG("First hex is %x", *self->addr);
 
-       for (i = 0; i < LENGTH; i++)
-               self->addr[i] = (char)i;
+       for (i = 0; i < LENGTH / sizeof(*self->addr); i++)
+               self->addr[i] = RANDOM_CONSTANT ^ i;
 
-       TH_LOG("First hex is %x", *((unsigned int *)self->addr));
+       TH_LOG("First hex is %x", *self->addr);
 
-       for (i = 0; i < LENGTH; i++) {
-               ASSERT_EQ(self->addr[i], (char)i) {
+       for (i = 0; i < LENGTH / sizeof(*self->addr); i++) {
+               ASSERT_EQ(self->addr[i], RANDOM_CONSTANT ^ i) {
                        TH_LOG("Error: Mismatch at %lu\n", i);
                };
        }

-- 
2.54.0.563.g4f69b47b94-goog



Reply via email to