From: SJ Park <sj@kernel.org>
To: SJ Park <sj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Liam R. Howlett" <liam@infradead.org>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>, Michal Hocko <mhocko@suse.com>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Vlastimil Babka <vbabka@kernel.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>
Subject: Re: [PATCH] mm/memory: fix hugetlb_zap_begin() call in zap_vma_range_batched()
Date: Thu, 3 Sep 2026 17:22:35 -0700 [thread overview]
Message-ID: <20260904002237.114959-1-sj@kernel.org> (raw)
In-Reply-To: <20260904000028.149656-1-sj@kernel.org>
On Thu, 3 Sep 2026 17:00:26 -0700 SJ Park <sj@kernel.org> wrote:
> Commit f1fc44daf618 ("mm/hugetlb: don't lock private resv_map during
> final unmap") added zap_details parameter to hugetlb_zap_begin(). But
> the hugetlb_zap_begin() call in zap_vma_range_batched() is not updated.
> As a result, build fails as below. Fix it.
>
> CC mm/memory.o
> .../mm/memory.c: In function ‘zap_vma_range_batched’:
> .../mm/memory.c:2308:9: error: too few arguments to function ‘hugetlb_zap_begin’
> 2308 | hugetlb_zap_begin(vma, &range.start, &range.end);
> | ^~~~~~~~~~~~~~~~~
> In file included from .../mm/memory.c:48:
> .../include/linux/hugetlb.h:253:20: note: declared here
> 253 | static inline void hugetlb_zap_begin(struct vm_area_struct *vma,
> | ^~~~~~~~~~~~~~~~~
>
> /* TODO: move below to commentary */
>
> I didn't read the broken commit in depth. This fix is only
> build-tested. I wanted to report the issue with this as a temporal fix,
> but the broken commit doesn't have Link: tag. So directly posting this
> temporal and not very well verified fix first.
>
> Fixes: Fixes: f1fc44daf618 ("mm/hugetlb: don't lock private resv_map during final unmap")
> Signed-off-by: SJ Park <sj@kernel.org>
> ---
> mm/memory.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index fcf893f4b55e2..151a1bf512e00 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -2305,7 +2305,7 @@ void zap_vma_range_batched(struct mmu_gather *tlb,
>
> mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma->vm_mm,
> address, end);
> - hugetlb_zap_begin(vma, &range.start, &range.end);
> + hugetlb_zap_begin(vma, &range.start, &range.end, details);
> update_hiwater_rss(vma->vm_mm);
> mmu_notifier_invalidate_range_start(&range);
> /*
And this is not enough for some configs.
# /home/lkhack/linux/mm/memory.c: In function 'unmap_vmas':
# /home/lkhack/linux/mm/memory.c:2272:3: error: too many arguments to function 'hugetlb_zap_begin'
# 2272 | hugetlb_zap_begin(vma, &start, &end, &details);
# | ^~~~~~~~~~~~~~~~~
# In file included from /home/lkhack/linux/mm/memory.c:48:
# /home/lkhack/linux/include/linux/hugetlb.h:322:20: note: declared here
# 322 | static inline void hugetlb_zap_begin(
Below change fixes the build on the config, too.
'''
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 63c85f2540c9f..0cdccafb83983 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -321,7 +321,8 @@ static inline void adjust_range_if_pmd_sharing_possible(
static inline void hugetlb_zap_begin(
struct vm_area_struct *vma,
- unsigned long *start, unsigned long *end)
+ unsigned long *start, unsigned long *end,
+ struct zap_details *details)
{
}
'''
So more complete version of the patch would look like below. Forgive me
posting v2 as a reply for this case. I think this doesn't deserve a new
thread.
Thanks,
SJ
=== >8 ===
From hackermail Thu Jan 1 00:00:00 1970
From: SJ Park <sj@kernel.org>
Date: Thu, 3 Sep 2026 16:52:06 -0700
Subject: [PATCH v2] mm/memory: fix hugetlb_zap_begin() call in zap_vma_range_batched()
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Liam R. Howlett" <liam@infradead.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
Commit f1fc44daf618 ("mm/hugetlb: don't lock private resv_map during
final unmap") added zap_details parameter to hugetlb_zap_begin(). But
the hugetlb_zap_begin() call in zap_vma_range_batched() is not updated.
As a result, build fails as below.
CC mm/memory.o
.../mm/memory.c: In function ‘zap_vma_range_batched’:
.../mm/memory.c:2308:9: error: too few arguments to function ‘hugetlb_zap_begin’
2308 | hugetlb_zap_begin(vma, &range.start, &range.end);
| ^~~~~~~~~~~~~~~~~
In file included from .../mm/memory.c:48:
.../include/linux/hugetlb.h:253:20: note: declared here
253 | static inline void hugetlb_zap_begin(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~
It also fails on !CONFIG_HUGETLB_PAGE config.
.../mm/memory.c: In function 'unmap_vmas':
.../mm/memory.c:2272:3: error: too many arguments to function 'hugetlb_zap_begin'
2272 | hugetlb_zap_begin(vma, &start, &end, &details);
| ^~~~~~~~~~~~~~~~~
In file included from .../mm/memory.c:48:
.../include/linux/hugetlb.h:322:20: note: declared here
322 | static inline void hugetlb_zap_begin(
Fixes: Fixes: f1fc44daf618 ("mm/hugetlb: don't lock private resv_map during final unmap")
Signed-off-by: SJ Park <sj@kernel.org>
---
I didn't read the broken commit in depth. This fix is only
build-tested. I wanted to report the issue with this as a temporal fix,
but the broken commit doesn't have Link: tag. So directly posting this
temporal and not very well verified fix first.
Changes from v1
- v1: https://lore.kernel.org/20260904000028.149656-1-sj@kernel.org
- Fix !CONFIG_HUGETLB_PAGE build.
include/linux/hugetlb.h | 3 ++-
mm/memory.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 63c85f2540c9f..0cdccafb83983 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -321,7 +321,8 @@ static inline void adjust_range_if_pmd_sharing_possible(
static inline void hugetlb_zap_begin(
struct vm_area_struct *vma,
- unsigned long *start, unsigned long *end)
+ unsigned long *start, unsigned long *end,
+ struct zap_details *details)
{
}
diff --git a/mm/memory.c b/mm/memory.c
index fcf893f4b55e2..151a1bf512e00 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2305,7 +2305,7 @@ void zap_vma_range_batched(struct mmu_gather *tlb,
mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma->vm_mm,
address, end);
- hugetlb_zap_begin(vma, &range.start, &range.end);
+ hugetlb_zap_begin(vma, &range.start, &range.end, details);
update_hiwater_rss(vma->vm_mm);
mmu_notifier_invalidate_range_start(&range);
/*
base-commit: 2d1388907095f676b59fe6dd22f244abc08408cf
--
2.47.3
next prev parent reply other threads:[~2026-09-04 0:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 0:00 [PATCH] mm/memory: fix hugetlb_zap_begin() call in zap_vma_range_batched() SJ Park
2026-09-04 0:06 ` SJ Park
2026-09-04 0:22 ` SJ Park [this message]
2026-09-04 0:35 ` Andrew Morton
2026-09-04 1:15 ` SJ Park
2026-09-07 17:05 ` Zenghui Yu
2026-09-08 0:14 ` Zi Yan
2026-09-09 3:01 ` 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=20260904002237.114959-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/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.