All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Zhen Ni" <zhen.ni@easystack.cn>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v2 4/6] mm/page_owner: record the NUMA node in the scan cursor
Date: Tue, 13 Oct 2026 12:36:12 +0000	[thread overview]
Message-ID: <sashiko-outbox-169722@kernel.org> (raw)
In-Reply-To: <20261013122125.843451-5-zhen.ni@easystack.cn>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] mm: incomplete fix leaves page_owner vulnerable to unmapped page dereference
--

commit 7b174b26adeea5712aaa10bd465514b5ce7dbe36
Author: Zhen Ni <zhen.ni@easystack.cn>
Subject: mm/page_owner: record the NUMA node in the scan cursor

This commit computes the page's NUMA node in page_owner_next_eligible()
and stores it in the scan cursor to avoid dereferencing a potentially
unmapped page later. It updates the debugfs nid filter and BPF program
to use this stored node value.

> diff --git a/mm/page_owner.c b/mm/page_owner.c
> index 617346a4ab22a..113e4e7e0b3a1 100644
> --- a/mm/page_owner.c
> +++ b/mm/page_owner.c
[ ... ]
> @@ -810,18 +824,8 @@ read_page_owner(struct file *file, char __user *buf, size_t count, loff_t *ppos)
>  	/* Find an allocated page */
>  	while (page_owner_next_eligible(&scan)) {
>  		if (state->nid_filter_enabled) {
> -			int nid;
> -			memdesc_flags_t page_flags =
> -				READ_ONCE(scan.page->flags);
> -
> -			/*
> -			 * Bypass PF_POISONED_CHECK() in page_to_nid() to avoid
> -			 * VM_BUG_ON when accessing poisoned pages.
> -			 */
> -			if (page_flags.f == PAGE_POISON_PATTERN)
> -				goto skip_continue;
> -			nid = memdesc_nid(&page_flags);
> -			if (!node_isset(nid, state->nid_filter))
> +			if (scan.nid < 0 ||
> +			    !node_isset(scan.nid, state->nid_filter))
>  				goto skip_continue;
>  		}
>  

[Severity: High]
Does this fix leave scan.page vulnerable to an unmapped page dereference
shortly after this block?

Although this patch successfully avoids dereferencing scan.page when checking
the node filter, page_owner_next_eligible() drops the RCU lock via
page_ext_put() before returning.

Just below the quoted block in read_page_owner(), scan.page is still
passed directly to print_page_owner():

read_page_owner() {
    ...
    while (page_owner_next_eligible(&scan)) {
        ...
        return print_page_owner(buf, count, scan.pfn, scan.page,
                                &scan.po_snap, scan.po_snap.handle, state);
    ...
}

Inside print_page_owner(), the pointer is dereferenced by scnprintf using
the %pGp formatter on &page->flags.f.

If a concurrent memory hot-remove operation frees the vmemmap backing this
struct page after the RCU lock is dropped, will this %pGp format access
trigger a kernel panic?

Additionally, a follow-up patch in this series (Patch 5) appears to introduce
get_page_memcg_info() which also unconditionally dereferences scan.page
outside the RCU lock from read_page_owner(). Does that face the same
use-after-free risk?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261013122125.843451-1-zhen.ni@easystack.cn?part=4

  reply	other threads:[~2026-10-13 12:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-13 12:21 [PATCH v2 0/6] mm/page_owner: add bpf_iter and kfuncs Zhen Ni
2026-10-13 12:21 ` [PATCH v2 1/6] mm/page_owner: extract page_owner_next_eligible() from read loop Zhen Ni
2026-10-13 12:21 ` [PATCH v2 2/6] mm/page_owner: add bpf_iter target "page_owner" Zhen Ni
2026-10-13 13:51   ` bot+bpf-ci
2026-10-13 12:21 ` [PATCH v2 3/6] mm/page_owner: add open-coded page_owner iterator Zhen Ni
2026-10-13 12:49   ` sashiko-bot
2026-10-13 13:51   ` bot+bpf-ci
2026-10-13 12:21 ` [PATCH v2 4/6] mm/page_owner: record the NUMA node in the scan cursor Zhen Ni
2026-10-13 12:36   ` sashiko-bot [this message]
2026-10-13 12:21 ` [PATCH v2 5/6] mm/page_owner: add bpf_page_owner_get_memcg_info() kfunc Zhen Ni
2026-10-13 12:49   ` sashiko-bot
2026-10-13 12:21 ` [PATCH v2 6/6] selftests/bpf: add tests for the page_owner bpf_iter target Zhen Ni
2026-10-13 12:38   ` sashiko-bot
2026-10-13 17:17 ` [PATCH v2 0/6] mm/page_owner: add bpf_iter and kfuncs Zi Yan

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=sashiko-outbox-169722@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=zhen.ni@easystack.cn \
    /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.