Patch #1 fixes a GUP-fast issue, whereby we might succeed in pinning secretmem folios. Patch #2 extends the memfd_secret selftest to cover that case. Patch #3 removes folio_is_secretmem() and instead lets folio_fast_pin_allowed() cover that case as well. With this series, the reproducer (+selftests) works as expected. To test patch #3, the gup_longterm test does exactly what we need, and keeps on working as expected. Without the fix: TAP version 13 1..6 ok 1 mlock limit is respected ok 2 file IO is blocked as expected not ok 3 vmsplice: unexpected memory access with fresh page ok 4 vmsplice is blocked as expected with existing page ok 5 process_vm_read is blocked as expected ok 6 ptrace is blocked as expected # Totals: pass:5 fail:1 xfail:0 xpass:0 skip:0 error:0 With the fix: TAP version 13 1..6 ok 1 mlock limit is respected ok 2 file IO is blocked as expected ok 3 vmsplice is blocked as expected with fresh page ok 4 vmsplice is blocked as expected with existing page ok 5 process_vm_read is blocked as expected ok 6 ptrace is blocked as expected # Totals: pass:6 fail:0 xfail:0 xpass:0 skip:0 error:0 v1 -> v2: * "mm/secretmem: fix GUP-fast succeeding on secretmem folios" -> Drop the LRU check completely -> Rephrase patch description -> (Dropped RB from Mike) * "selftests/memfd_secret: add vmsplice() test" -> Add test with fresh+existing page -> Change pass/fail message -> Rephrase patch description -> (Dropped RB from Mike) * "mm: merge folio_is_secretmem() and folio_fast_pin_allowed() into gup_fast_folio_allowed()" -> Adjust to dropped LRU check -> Rename folio_fast_pin_allowed() to gup_fast_folio_allowed() -> Rephrase patch description -> Add RB from Mike Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> Cc: Miklos Szeredi <mszeredi@xxxxxxxxxx> Cc: Lorenzo Stoakes <lstoakes@xxxxxxxxx> Cc: xingwei lee <xrivendell7@xxxxxxxxx> Cc: yue sun <samsun1006219@xxxxxxxxx> David Hildenbrand (3): mm/secretmem: fix GUP-fast succeeding on secretmem folios selftests/memfd_secret: add vmsplice() test mm: merge folio_is_secretmem() and folio_fast_pin_allowed() into gup_fast_folio_allowed() include/linux/secretmem.h | 21 +--------- mm/gup.c | 48 ++++++++++++--------- tools/testing/selftests/mm/memfd_secret.c | 51 ++++++++++++++++++++++- 3 files changed, 79 insertions(+), 41 deletions(-) -- 2.43.2