]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
selftests/mm: virtual_address_range: mmap() without PROT_WRITE
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Tue, 14 Jan 2025 16:06:45 +0000 (17:06 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 26 Jan 2025 04:22:44 +0000 (20:22 -0800)
Patch series "selftests/mm: virtual_address_range: Reduce memory", v4.

The selftest started failing since commit e93d2521b27f ("x86/vdso: Split
virtual clock pages into dedicated mapping") was merged.  While debugging
I stumbled upon some memory usage optimizations.

With these test now runs on a VM with only 60MiB of memory.

This patch (of 4):

When mapping a larger chunk than physical memory is available with
PROT_WRITE and overcommit is disabled, the mapping will fail.  This will
prevent the test from running on systems with less then ~1GiB of memory
and triggering an inscrutinable test failure.  As the mappings are never
written to anyways, the flag can be removed.

Link: https://lkml.kernel.org/r/20250114-virtual_address_range-tests-v4-0-6fd7269934a5@linutronix.de
Link: https://lkml.kernel.org/r/20250114-virtual_address_range-tests-v4-1-6fd7269934a5@linutronix.de
Fixes: 4e5ce33ceb32 ("selftests/vm: add a test for virtual address range mapping")
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Acked-by: David Hildenbrand <david@redhat.com>
Acked-by: Dev Jain <dev.jain@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: Shuah Khan (Samsung OSG) <shuah@kernel.org>
Cc: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/virtual_address_range.c

index 2a2b69e91950a37999f606847c9c8328d79890c2..ea6ccf49ef4c552f26317c2a40b09bca1a677f8f 100644 (file)
@@ -166,7 +166,7 @@ int main(int argc, char *argv[])
        ksft_set_plan(1);
 
        for (i = 0; i < NR_CHUNKS_LOW; i++) {
-               ptr[i] = mmap(NULL, MAP_CHUNK_SIZE, PROT_READ | PROT_WRITE,
+               ptr[i] = mmap(NULL, MAP_CHUNK_SIZE, PROT_READ,
                              MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 
                if (ptr[i] == MAP_FAILED) {
@@ -186,7 +186,7 @@ int main(int argc, char *argv[])
 
        for (i = 0; i < NR_CHUNKS_HIGH; i++) {
                hint = hint_addr();
-               hptr[i] = mmap(hint, MAP_CHUNK_SIZE, PROT_READ | PROT_WRITE,
+               hptr[i] = mmap(hint, MAP_CHUNK_SIZE, PROT_READ,
                               MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 
                if (hptr[i] == MAP_FAILED)