]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm: use zone lock guard in __offline_isolated_pages()
authorDmitry Ilvokhin <d@ilvokhin.com>
Wed, 29 Apr 2026 12:02:13 +0000 (12:02 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 29 May 2026 04:05:06 +0000 (21:05 -0700)
Use spinlock_irqsave zone lock guard in __offline_isolated_pages() to
replace the explicit lock/unlock pattern with automatic scope-based
cleanup.

Link: https://lore.kernel.org/13149be4f8151e18eb5f1eb4f3241ab3cffb373e.1777462630.git.d@ilvokhin.com
Signed-off-by: Dmitry Ilvokhin <d@ilvokhin.com>
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Brendan Jackman <jackmanb@google.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/page_alloc.c

index 8835064aaa8c0f3b66e086c83d9669af15bc3e4e..69a99af7777718eefd7b2642777a25ab186ca723 100644 (file)
@@ -7531,7 +7531,7 @@ void zone_pcp_reset(struct zone *zone)
 unsigned long __offline_isolated_pages(unsigned long start_pfn,
                unsigned long end_pfn)
 {
-       unsigned long already_offline = 0, flags;
+       unsigned long already_offline = 0;
        unsigned long pfn = start_pfn;
        struct page *page;
        struct zone *zone;
@@ -7539,7 +7539,7 @@ unsigned long __offline_isolated_pages(unsigned long start_pfn,
 
        offline_mem_sections(pfn, end_pfn);
        zone = page_zone(pfn_to_page(pfn));
-       spin_lock_irqsave(&zone->lock, flags);
+       guard(spinlock_irqsave)(&zone->lock);
        while (pfn < end_pfn) {
                page = pfn_to_page(pfn);
                /*
@@ -7569,7 +7569,6 @@ unsigned long __offline_isolated_pages(unsigned long start_pfn,
                del_page_from_free_list(page, zone, order, MIGRATE_ISOLATE);
                pfn += (1 << order);
        }
-       spin_unlock_irqrestore(&zone->lock, flags);
 
        return end_pfn - start_pfn - already_offline;
 }