mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
mm: use zone lock guard in __offline_isolated_pages()
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>
This commit is contained in:
parent
5ad64655dd
commit
95b8e43226
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user