public inbox for linux-mm@kvack.org
 help / color / mirror / Atom feed
* [PATCH v2 0/9] mm/huge_memory: refactor zap_huge_pmd()
@ 2026-03-19 13:00 Lorenzo Stoakes (Oracle)
  2026-03-19 13:00 ` [PATCH v2 1/9] mm/huge_memory: simplify vma_is_specal_huge() Lorenzo Stoakes (Oracle)
                   ` (9 more replies)
  0 siblings, 10 replies; 43+ messages in thread
From: Lorenzo Stoakes (Oracle) @ 2026-03-19 13:00 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Hildenbrand, Zi Yan, Baolin Wang, Liam R . Howlett,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	Vlastimil Babka, Mike Rapoport, Suren Baghdasaryan, Michal Hocko,
	linux-mm, linux-kernel

The zap_huge_pmd() function is overly complicated, clean it up and also add
an assert in the case that we encounter a buggy PMD entry that doesn't
match expectations.

This is motivated by a bug discovered [0] where the PMD entry was none of:

* A non-DAX, PFN or mixed map.
* The huge zero folio
* A present PMD entry
* A softleaf entry

In zap_huge_pmd(), but due to the bug we manged to reach this code.

It is useful to explicitly call this out rather than have an arbitrary NULL
pointer dereference happen, which also improves understanding of what's
going on.

[0]:https://lore.kernel.org/all/6b3d7ad7-49e1-407a-903d-3103704160d8@lucifer.local/


v2:
* Added tags thanks everybody!
* Fixed issue with returning false on bug case potentially looping forever as
  per Baolin.
* Fixed further issue in bug path in 5/8 with double pte unlock.
* Add patch to use vm_normal_folio_pmd() as per David.

v1:
https://lore.kernel.org/all/cover.1773865827.git.ljs@kernel.org/

Lorenzo Stoakes (Oracle) (9):
  mm/huge_memory: simplify vma_is_specal_huge()
  mm/huge: avoid big else branch in zap_huge_pmd()
  mm/huge_memory: have zap_huge_pmd return a boolean, add kdoc
  mm/huge_memory: handle buggy PMD entry in zap_huge_pmd()
  mm/huge_memory: add a common exit path to zap_huge_pmd()
  mm/huge_memory: remove unnecessary VM_BUG_ON_PAGE()
  mm/huge_memory: deduplicate zap deposited table call
  mm/huge_memory: deduplicate zap_huge_pmd() further by tracking state
  mm/huge_memory: have zap_huge_pmd() use vm_normal_folio_pmd()

 include/linux/huge_mm.h |   8 +--
 include/linux/mm.h      |  16 -----
 mm/huge_memory.c        | 141 +++++++++++++++++++++++-----------------
 3 files changed, 85 insertions(+), 80 deletions(-)

--
2.53.


^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2026-03-24 18:05 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-19 13:00 [PATCH v2 0/9] mm/huge_memory: refactor zap_huge_pmd() Lorenzo Stoakes (Oracle)
2026-03-19 13:00 ` [PATCH v2 1/9] mm/huge_memory: simplify vma_is_specal_huge() Lorenzo Stoakes (Oracle)
2026-03-19 16:52   ` Kiryl Shutsemau
2026-03-19 17:16     ` Lorenzo Stoakes (Oracle)
2026-03-19 13:00 ` [PATCH v2 2/9] mm/huge: avoid big else branch in zap_huge_pmd() Lorenzo Stoakes (Oracle)
2026-03-19 13:00 ` [PATCH v2 3/9] mm/huge_memory: have zap_huge_pmd return a boolean, add kdoc Lorenzo Stoakes (Oracle)
2026-03-19 13:00 ` [PATCH v2 4/9] mm/huge_memory: handle buggy PMD entry in zap_huge_pmd() Lorenzo Stoakes (Oracle)
2026-03-20  3:20   ` Baolin Wang
2026-03-19 13:00 ` [PATCH v2 5/9] mm/huge_memory: add a common exit path to zap_huge_pmd() Lorenzo Stoakes (Oracle)
2026-03-20  3:27   ` Baolin Wang
2026-03-19 13:00 ` [PATCH v2 6/9] mm/huge_memory: remove unnecessary VM_BUG_ON_PAGE() Lorenzo Stoakes (Oracle)
2026-03-20  3:31   ` Baolin Wang
2026-03-19 13:00 ` [PATCH v2 7/9] mm/huge_memory: deduplicate zap deposited table call Lorenzo Stoakes (Oracle)
2026-03-19 17:03   ` Kiryl Shutsemau
2026-03-19 17:18     ` Lorenzo Stoakes (Oracle)
2026-03-19 21:56       ` Kiryl Shutsemau
2026-03-20 13:59         ` Lorenzo Stoakes (Oracle)
2026-03-20 14:14           ` Lorenzo Stoakes (Oracle)
2026-03-19 13:00 ` [PATCH v2 8/9] mm/huge_memory: deduplicate zap_huge_pmd() further by tracking state Lorenzo Stoakes (Oracle)
2026-03-20  3:49   ` Baolin Wang
2026-03-20 13:51     ` Lorenzo Stoakes (Oracle)
2026-03-21  5:15       ` Baolin Wang
2026-03-19 13:00 ` [PATCH v2 9/9] mm/huge_memory: have zap_huge_pmd() use vm_normal_folio_pmd() Lorenzo Stoakes (Oracle)
2026-03-20  3:09 ` [PATCH v2 0/9] mm/huge_memory: refactor zap_huge_pmd() Andrew Morton
2026-03-20 13:27   ` Lorenzo Stoakes (Oracle)
2026-03-21  3:21   ` Roman Gushchin
2026-03-21  3:33     ` Andrew Morton
2026-03-22  0:15       ` Andrew Morton
2026-03-22  2:12         ` Roman Gushchin
2026-03-23 11:19           ` Lorenzo Stoakes (Oracle)
2026-03-23 11:24             ` David Hildenbrand (Arm)
2026-03-23 11:31         ` Lorenzo Stoakes (Oracle)
2026-03-23 12:34           ` Pedro Falcato
2026-03-23 21:36             ` Andrew Morton
2026-03-23 23:27               ` Pedro Falcato
2026-03-24  0:05                 ` Andrew Morton
2026-03-24  7:35                   ` Lorenzo Stoakes (Oracle)
2026-03-24  7:58               ` Mike Rapoport
2026-03-24  9:55                 ` Lorenzo Stoakes (Oracle)
2026-03-24  1:08           ` Roman Gushchin
2026-03-24  7:56             ` Lorenzo Stoakes (Oracle)
2026-03-24 15:24               ` Roman Gushchin
2026-03-24 18:05                 ` Lorenzo Stoakes (Oracle)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox