From: sashiko-bot@kernel.org
To: "Lorenzo Stoakes" <ljs@kernel.org>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 11/13] mm/mlock: convert mlock code to use vma_flags_t
Date: Sat, 11 Jul 2026 19:12:22 +0000 [thread overview]
Message-ID: <20260711191222.9CB171F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260711-b4-vma-flags-mm-v2-11-0fa2357d5431@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Page table walk callbacks trigger an infinite loop when pte_offset_map_lock() fails.
--
--- Patch [11]: [PATCH v2 11/13] mm/mlock: convert mlock code to use vma_flags_t ---
commit 4497d6e0c6929dd585b156beb8ad3252bc077a68
Author: Lorenzo Stoakes <ljs@kernel.org>
mm/mlock: convert mlock code to use vma_flags_t
Replace use of the legacy vm_flags_t flags with vma_flags_t values
throughout the mlock logic. No functional change intended.
> diff --git a/mm/mlock.c b/mm/mlock.c
> index 34ffa954006fb..efa6716e4dfbd 100644
> --- a/mm/mlock.c
> +++ b/mm/mlock.c
[ ... ]
> @@ -368,7 +368,7 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr,
> folio = pmd_folio(*pmd);
> if (folio_is_zone_device(folio))
> goto out;
> - if (vma->vm_flags & VM_LOCKED)
> + if (vma_test(vma, VMA_LOCKED_BIT))
> mlock_folio(folio);
> else
> munlock_folio(folio);
[Severity: High]
This isn't a bug introduced by this patch, but while reviewing this function, I
noticed a potential infinite loop in mlock_pte_range().
When pte_offset_map_lock() returns NULL (for example, when encountering a
non-present PMD migration entry during concurrent THP migration), the callback
sets ACTION_AGAIN and returns 0:
start_pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
if (!start_pte) {
walk->action = ACTION_AGAIN;
return 0;
}
Does this cause walk_pmd_range() to continuously retry without yielding the
CPU?
Because the function returns 0, it entirely bypasses the cond_resched()
call at the end of mlock_pte_range(). Meanwhile, ACTION_AGAIN instructs
walk_pmd_range() to jump to its retry label and re-process the exact same
PMD.
Could an unprivileged user space process trigger a soft or hard CPU lockup
by calling mlock() on a memory range during a concurrent migration?
I also noticed this exact same pattern appears in other page walk callbacks
that return 0 with ACTION_AGAIN when pte_offset_map_lock() fails, such as
queue_folios_pmd(), mincore_pte_range(), smaps_pte_range(),
pagemap_pmd_range(), gather_pte_stats(), clear_refs_pte_range(), and
pagemap2_pte_range().
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260711-b4-vma-flags-mm-v2-0-0fa2357d5431@kernel.org?part=11
next prev parent reply other threads:[~2026-07-11 19:12 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-11 18:44 [PATCH v2 00/13] mm: convert more vm_flags_t users to vma_flags_t Lorenzo Stoakes
2026-07-11 18:44 ` [PATCH v2 01/13] mm: introduce vma_flags_can_grow() and vma_can_grow() Lorenzo Stoakes
2026-07-11 18:44 ` [PATCH v2 02/13] mm/vma: update do_mmap() to use vma_flags_t Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 03/13] mm: convert __get_unmapped_area() " Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 04/13] mm: update generic_get_unmapped_area[_topdown]() " Lorenzo Stoakes
2026-07-11 19:02 ` sashiko-bot
2026-07-11 18:45 ` [PATCH v2 05/13] mm: prefer mm->def_vma_flags in mm logic Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 06/13] mm/vma: convert vm_pgprot_modify() to use vma_flags_t and rename Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 07/13] mm/vma: rename vma_get_page_prot to vma_flags_to_page_prot Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 08/13] mm: introduce vma_get_page_prot() and use it Lorenzo Stoakes
2026-07-11 21:02 ` sashiko-bot
2026-07-11 18:45 ` [PATCH v2 09/13] mm/vma: update create_init_stack_vma() to use vma_flags_t Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 10/13] mm/vma: convert miscellaneous uses of VMA flags in core mm Lorenzo Stoakes
2026-07-11 18:45 ` [PATCH v2 11/13] mm/mlock: convert mlock code to use vma_flags_t Lorenzo Stoakes
2026-07-11 19:12 ` sashiko-bot [this message]
2026-07-11 18:45 ` [PATCH v2 12/13] mm/mprotect: convert mprotect " Lorenzo Stoakes
2026-07-14 2:46 ` Zi Yan
2026-07-14 2:46 ` Zi Yan
2026-07-11 18:45 ` [PATCH v2 13/13] mm/mremap: convert mremap " Lorenzo Stoakes
2026-07-11 19:14 ` sashiko-bot
2026-07-13 17:36 ` ✗ Fi.CI.BUILD: failure for mm: convert more vm_flags_t users to vma_flags_t Patchwork
2026-07-14 2:25 ` [PATCH v2 00/13] " Andrew Morton
2026-07-14 2:25 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260711191222.9CB171F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=ljs@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.