[PATCH v4 0/3] fix MAP_DROPPABLE not supported errno

From: Anthony Yznaga

Date: Wed Apr 15 2026 - 23:44:21 EST


Mark Brown reported seeing a regression in -next on 32 bit arm with the
mlock selftests. Before exiting and marking the tests failed, the following
message was logged after an attempt to create a MAP_DROPPABLE mapping:

Bail out! mmap error: Unknown error 524

It turns out error 524 is ENOTSUPP which is an error that userspace is not
supposed to see, but it indicates in this instance that MAP_DROPPABLE is
not supported.

The first patch changes the errno returned to EOPNOTSUPP. The second patch
is a second version of a prior patch to introduce selftests to verify
locking behavior with droppable mappings with the additional change to skip
the tests when MAP_DROPPABLE is not supported. The third patch fixes the
MAP_DROPPABLE selftest so that it is run by the framework and skips if
MAP_DROPPABLE is not supported.

v4:
- Removed unnecessary #ifdef MAP_DROPPABLE from patch 2 (DavidH)
- Changed the tests to also skip if mmap() returns EINVAL
- Added a third patch to fix the MAP_DROPPABLE selftest

v3:
- Added acked-by's and reviewed-by's to patch 1
- Addressed sashiko AI reviewbot questions:
- Call munlockall() if test_mlockall_future_droppable() returns early
- Skip the tests if they are compiled for an older kernel without
MAP_DROPPABLE.

v2:
- Remove unnecessary mlock() call from selftest (DavidH)
- Change tests to not exit on failure (DavidH)

Anthony Yznaga (3):
mm: fix mmap errno value when MAP_DROPPABLE is not supported
selftests/mm: verify droppable mappings cannot be locked
selftests/mm: run the MAP_DROPPABLE selftest

mm/mmap.c | 2 +-
tools/testing/selftests/mm/droppable.c | 9 ++-
tools/testing/selftests/mm/mlock2-tests.c | 84 ++++++++++++++++++++---
tools/testing/selftests/mm/run_vmtests.sh | 1 +
4 files changed, 85 insertions(+), 11 deletions(-)

--
2.47.3