From: Fan Ni <nifan.cxl@gmail.com>
To: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, linux-cxl@vger.kernel.org,
cerasuolodomenico@gmail.com, hannes@cmpxchg.org,
j.granados@samsung.com, lizhijian@fujitsu.com,
muchun.song@linux.dev, nphamcs@gmail.com, rientjes@google.com,
rppt@kernel.org, souravpanda@google.com, vbabka@suse.cz,
willy@infradead.org, dan.j.williams@intel.com,
yi.zhang@redhat.com, alison.schofield@intel.com,
david@redhat.com, yosryahmed@google.com
Subject: Re: [PATCH v3 1/4] mm: update the memmap stat before page is freed
Date: Thu, 8 Aug 2024 10:17:59 -0700 [thread overview]
Message-ID: <ZrT9x_LMwdYo5bHJ@fan> (raw)
In-Reply-To: <20240808154237.220029-2-pasha.tatashin@soleen.com>
On Thu, Aug 08, 2024 at 03:42:34PM +0000, Pasha Tatashin wrote:
> It is more logical to update the stat before the page is freed, to avoid
> use after free scenarios.
>
> Fixes: 15995a352474 ("mm: report per-page metadata information")
> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Fan Ni <fan.ni@samsung.com>
> ---
> mm/hugetlb_vmemmap.c | 4 ++--
> mm/page_ext.c | 8 ++++----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c
> index 829112b0a914..fa83a7b38199 100644
> --- a/mm/hugetlb_vmemmap.c
> +++ b/mm/hugetlb_vmemmap.c
> @@ -185,11 +185,11 @@ static int vmemmap_remap_range(unsigned long start, unsigned long end,
> static inline void free_vmemmap_page(struct page *page)
> {
> if (PageReserved(page)) {
> - free_bootmem_page(page);
> mod_node_page_state(page_pgdat(page), NR_MEMMAP_BOOT, -1);
> + free_bootmem_page(page);
> } else {
> - __free_page(page);
> mod_node_page_state(page_pgdat(page), NR_MEMMAP, -1);
> + __free_page(page);
> }
> }
>
> diff --git a/mm/page_ext.c b/mm/page_ext.c
> index c191e490c401..962d45eee1f8 100644
> --- a/mm/page_ext.c
> +++ b/mm/page_ext.c
> @@ -330,18 +330,18 @@ static void free_page_ext(void *addr)
> if (is_vmalloc_addr(addr)) {
> page = vmalloc_to_page(addr);
> pgdat = page_pgdat(page);
> + mod_node_page_state(pgdat, NR_MEMMAP,
> + -1L * (DIV_ROUND_UP(table_size, PAGE_SIZE)));
> vfree(addr);
> } else {
> page = virt_to_page(addr);
> pgdat = page_pgdat(page);
> + mod_node_page_state(pgdat, NR_MEMMAP,
> + -1L * (DIV_ROUND_UP(table_size, PAGE_SIZE)));
> BUG_ON(PageReserved(page));
> kmemleak_free(addr);
> free_pages_exact(addr, table_size);
> }
> -
> - mod_node_page_state(pgdat, NR_MEMMAP,
> - -1L * (DIV_ROUND_UP(table_size, PAGE_SIZE)));
> -
> }
>
> static void __free_page_ext(unsigned long pfn)
> --
> 2.46.0.76.ge559c4bf1a-goog
>
next prev parent reply other threads:[~2024-08-08 17:18 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-08 15:42 [PATCH v3 0/4] Fixes for memmap accounting Pasha Tatashin
2024-08-08 15:42 ` [PATCH v3 1/4] mm: update the memmap stat before page is freed Pasha Tatashin
2024-08-08 17:17 ` Yosry Ahmed
2024-08-08 17:20 ` Yosry Ahmed
2024-08-08 17:37 ` Pasha Tatashin
2024-08-08 17:17 ` Fan Ni [this message]
2024-08-08 15:42 ` [PATCH v3 2/4] mm: don't account memmap on failure Pasha Tatashin
2024-08-08 17:18 ` Yosry Ahmed
2024-08-08 17:19 ` Fan Ni
2024-08-08 18:12 ` David Hildenbrand
2024-08-08 18:54 ` Pasha Tatashin
2024-08-08 15:42 ` [PATCH v3 3/4] mm: add system wide stats items category Pasha Tatashin
2024-08-08 18:20 ` David Hildenbrand
2024-08-08 19:01 ` Pasha Tatashin
2024-08-08 15:42 ` [PATCH v3 4/4] mm: don't account memmap per-node Pasha Tatashin
2024-08-08 18:26 ` David Hildenbrand
2024-08-08 19:03 ` Pasha Tatashin
2024-08-08 18:55 ` Alison Schofield
2024-08-08 19:05 ` Pasha Tatashin
2024-08-08 21:12 ` Alison Schofield
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=ZrT9x_LMwdYo5bHJ@fan \
--to=nifan.cxl@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=cerasuolodomenico@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=hannes@cmpxchg.org \
--cc=j.granados@samsung.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lizhijian@fujitsu.com \
--cc=muchun.song@linux.dev \
--cc=nphamcs@gmail.com \
--cc=pasha.tatashin@soleen.com \
--cc=rientjes@google.com \
--cc=rppt@kernel.org \
--cc=souravpanda@google.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=yi.zhang@redhat.com \
--cc=yosryahmed@google.com \
/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.