On Fri, 14 Aug 2026 07:53:28 +0900 Daehyeon Ko <[email protected]> wrote:

> Secretmem mappings are charged against RLIMIT_MEMLOCK and marked
> VM_LOCKED because their pages are unevictable and removed from the direct
> map.
> 
> dup_mmap() clears VM_LOCKED on the child copy, but mremap() uses that
> flag to decide whether an expansion needs a memlock limit check and
> accounting. An unprivileged child can therefore expand an inherited
> secretmem VMA past its limit and populate the added range.
> 
> Add a VMA open callback that marks secretmem copies without VM_LOCKED as
> VM_DONTEXPAND. dup_mmap() invokes the callback after clearing VM_LOCKED,
> while the original charged mapping retains its existing ability to grow
> within the limit.

Thanks.

> Add a selftest that verifies expansion of an inherited secretmem VMA is
> rejected.

And that's a nice touch.

> Fixes: 1507f51255c9 ("mm: introduce memfd_secret system call to create 
> "secret" memory areas")
> Cc: [email protected]

AI review might have found what appears to be a related bug in there:
        
https://sashiko.dev/#/patchset/[email protected]

Do you think that's pertinent to your fix, or should it be addressed
separately?



Reply via email to