linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] mm: use folio_expected_ref_count() helper for reference counting
@ 2025-06-09 17:08 Shivank Garg
  2025-06-09 19:21 ` Matthew Wilcox
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Shivank Garg @ 2025-06-09 17:08 UTC (permalink / raw)
  To: mhiramat, oleg, peterz, mingo, acme, namhyung, mark.rutland,
	alexander.shishkin, jolsa, irogers, adrian.hunter, kan.liang,
	david, akpm
  Cc: linux-kernel, linux-trace-kernel, linux-perf-users, linux-mm,
	Shivank Garg

Replace open-coded folio reference count calculations with the
folio_expected_ref_count() helper to improve code maintainability
and reduce duplication.

No functional changes intended.

Signed-off-by: Shivank Garg <shivankg@amd.com>
---
 kernel/events/uprobes.c | 5 +++--
 mm/memfd.c              | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 4c965ba77f9f..c978c8c27340 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -434,10 +434,11 @@ static int __uprobe_write_opcode(struct vm_area_struct *vma,
 	/*
 	 * When unregistering, we may only zap a PTE if uffd is disabled and
 	 * there are no unexpected folio references ...
+	 * Expected refs: mappings + swapcache.
+	 * We hold one additional reference (+1).
 	 */
 	if (is_register || userfaultfd_missing(vma) ||
-	    (folio_ref_count(folio) != folio_mapcount(folio) + 1 +
-	     folio_test_swapcache(folio) * folio_nr_pages(folio)))
+	    (folio_ref_count(folio) != folio_expected_ref_count(folio) + 1))
 		goto remap;
 
 	/*
diff --git a/mm/memfd.c b/mm/memfd.c
index ab367e61553d..4ed5506221b7 100644
--- a/mm/memfd.c
+++ b/mm/memfd.c
@@ -32,8 +32,8 @@
 
 static bool memfd_folio_has_extra_refs(struct folio *folio)
 {
-	return folio_ref_count(folio) - folio_mapcount(folio) !=
-	       folio_nr_pages(folio);
+	/* Expected refs: pagecache + mappings */
+	return folio_ref_count(folio) != folio_expected_ref_count(folio);
 }
 
 static void memfd_tag_pins(struct xa_state *xas)
-- 
2.43.0


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

end of thread, other threads:[~2025-06-10  9:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-09 17:08 [RFC] mm: use folio_expected_ref_count() helper for reference counting Shivank Garg
2025-06-09 19:21 ` Matthew Wilcox
2025-06-09 19:31   ` Steven Rostedt
2025-06-09 19:51     ` Matthew Wilcox
2025-06-09 20:14       ` Steven Rostedt
2025-06-10  8:59         ` Shivank Garg
2025-06-10  7:05       ` David Hildenbrand
2025-06-10  2:26 ` Alistair Popple
2025-06-10  5:50   ` Shivank Garg
2025-06-10  7:08 ` David Hildenbrand
2025-06-10  9:00   ` Shivank Garg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).