[PATCH 1/3] x86/mm: Use guard() in cpa_collapse_large_pages()

From: Peter Zijlstra

Date: Wed Jul 29 2026 - 07:57:20 EST



Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
---
arch/x86/mm/pat/set_memory.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)

--- a/arch/x86/mm/pat/set_memory.c
+++ b/arch/x86/mm/pat/set_memory.c
@@ -417,7 +417,7 @@ static void cpa_collapse_large_pages(str
int collapsed = 0;
int i;

- spin_lock(&cpa_lock);
+ guard(spinlock)(&cpa_lock);

if (cpa->flags & (CPA_PAGES_ARRAY | CPA_ARRAY)) {
for (i = 0; i < cpa->numpages; i++)
@@ -432,10 +432,8 @@ static void cpa_collapse_large_pages(str
collapsed += collapse_large_pages(addr, &pgtables);
}

- if (!collapsed) {
- spin_unlock(&cpa_lock);
+ if (!collapsed)
return;
- }

flush_tlb_all();

@@ -443,8 +441,6 @@ static void cpa_collapse_large_pages(str
list_del(&ptdesc->pt_list);
pagetable_free(ptdesc);
}
-
- spin_unlock(&cpa_lock);
}

static void cpa_flush(struct cpa_data *cpa, int cache)