mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-26 12:30:23 +09:00
FROMLIST: userfaultfd/hugetlbfs: Fix minor fault page leak
When uffd-minor enabled, we need to put the page cache before handling the userfault in hugetlb_no_page(), otherwise the page refcount got leaked. This can be reproduced by running userfaultfd selftest with hugetlb_shared mode, then cat /proc/meminfo. Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Andrew Morton <akpm@linux-foundation.org> Fixes: f2bf15fb0969 ("userfaultfd: add minor fault registration mode") Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> Reviewed-by: Axel Rasmussen <axelrasmussen@google.com> Signed-off-by: Lokesh Gidra <lokeshgidra@google.com> Link: https://lore.kernel.org/patchwork/patch/1400632/ Bug: 160737021 Bug: 169683130 Change-Id: Iac0ebd6738af8b6212c5a6303e4ee2f482bb5841
This commit is contained in:
@@ -4460,6 +4460,7 @@ retry:
|
||||
/* Check for page in userfault range. */
|
||||
if (userfaultfd_minor(vma)) {
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
ret = hugetlb_handle_userfault(vma, mapping, idx,
|
||||
flags, haddr,
|
||||
VM_UFFD_MINOR);
|
||||
|
||||
Reference in New Issue
Block a user