On Fri, 22 Mar 2024 at 22:56, David Hildenbrand <david@xxxxxxxxxx> wrote: > From 85558a46d9f249f26bd77dd3b18d14f248464845 Mon Sep 17 00:00:00 2001 > From: David Hildenbrand <david@xxxxxxxxxx> > Date: Fri, 22 Mar 2024 22:45:36 +0100 > Subject: [PATCH] mm/secretmem: fix GUP-fast succeeding on secretmem folios > > folio_is_secretmem() states that secretmem folios cannot be LRU folios: > so we may only exit early if we find an LRU folio. Yet, we exit early if > we find a folio that is not a secretmem folio. > > Consequently, folio_is_secretmem() fails to detect secretmem folios and, > therefore, we can succeed in grabbing a secretmem folio during GUP-fast, > crashing the kernel when we later try reading/writing to the folio, because > the folio has been unmapped from the directmap. > > Reported-by: xingwei lee <xrivendell7@xxxxxxxxx> > Reported-by: yue sun <samsun1006219@xxxxxxxxx> > Debugged-by: Miklos Szeredi <miklos@xxxxxxxxxx> > Fixes: 1507f51255c9 ("mm: introduce memfd_secret system call to create "secret" memory areas") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> Verified that it's no longer crashing with the reproducers. Tested-by: Miklos Szeredi <mszeredi@xxxxxxxxxx>