Re: [PATCH v3 2/2] selftests/mm: verify droppable mappings cannot be locked
From: David Hildenbrand (Arm)
Date: Tue Apr 14 2026 - 06:08:18 EST
On 4/13/26 23:54, anthony.yznaga@xxxxxxxxxx wrote:
>
> On 4/13/26 12:46 PM, David Hildenbrand (Arm) wrote:
>>> It's correct though mlock2 would also work since it's been in glibc for
>>> several years now. I just matched the existing tests. mlock2_ is a
>>> simple wrapper around syscall in tools/testing/selftests/mm/mlock2.h,
>>> and it was introduced when the mlock2 syscall was introduced. A trailing
>>> rather than a preceding underscore is...unfortunate.
>> Interesting ... and confusing :)
>>
>>>
>>> The intent was to skip the tests if compiled with headers where
>>> MAP_DROPPABLE isn't defined rather than force the value and get EINVAL
>>> because the kernel doesn't know about it. This way EINVAL can be flagged
>>> as a test failure and not skipped since it would likely indicate a test
>>> or kernel bug.
>> Note that the kernel headers you are compiling against don't imply
>> anything about the kernel that is actually running! So the argument
>> regarding EINVAL doesn't really hold.
>
> Yes, I see that now.
>
>
>>
>> But note that we, in general, try to compile against the in-tree headers.
>>
>> See
>>
>> commit 75d60eb30daafb966db0e45f38e4cdeb5e5ed79c
>> Author: Lorenzo Stoakes <ljs@xxxxxxxxxx>
>> Date: Mon Oct 28 14:13:30 2024 +0000
>>
>> tools: testing: update tools UAPI header for mman-common.h
>>
>> Import the new MADV_GUARD_INSTALL/REMOVE madvise flags.
>>
>> And looking into it, I already see MAP_DROPPABLE there as well, so is
>> any special handling here even needed?
>>
> I'd say no special handling is needed.
Right, so the #ifdef is not required at all.
> If this test is compiled on with
> a kernel that has MAP_DROPPABLE but run on an older kernel without
> MAP_DROPPABLE, should it fail? Or should it interpret the EINVAL as a
> sufficient reason to assume MAP_DROPPABLE is not supported and to skip
> the result? My current thinking is it should fail because the EINVAL
> could have another cause.
Ah, you want to sense for MAP_DROPPABLE support in older kernels.
I guess treating -EINVAL as "not supported on old kernel" is good enough.
Looking at tools/testing/selftests/mm/droppable.c, we seem to not
perform any such checks ... unfortunately.
--
Cheers,
David