FAILED: patch "[PATCH] mm/page_alloc: don't spin_trylock() in NMI on UP" failed to apply to 6.18-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x 3105ae628fb785d48b49256468be4f21a7b3cfc0
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026090331-gooey-backup-bb1d@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 3105ae628fb785d48b49256468be4f21a7b3cfc0 Mon Sep 17 00:00:00 2001
From: Brendan Jackman <[email protected]>
Date: Wed, 15 Jul 2026 09:03:58 +0000
Subject: [PATCH] mm/page_alloc: don't spin_trylock() in NMI on UP
Patch series "mm/page_alloc: fixes for free_pages_nolock() on RT/UP".
Pre-existing bugs found by Sashiko during review of this other series:
https://lore.kernel.org/all/[email protected]/
I have not reproduced these bugs, and I suspect there is no real-world user that is affected by them.
This patch (of 2):
As noted in can_spin_trylock(), using this is unsafe in this context. commit 620b46ed6ae17 ("mm/page_alloc: return NULL early from alloc_frozen_pages_nolock() in NMI on UP") fixed this on the alloc side but missed the free side.
Impact: If BPF programs using these features in NMI (probably tracing) are present on non-SMP builds this might crash the kernel and is probably exploitable by local attackers for privilege escalation.
mm/page_alloc.c +1 -2
@@ -2979,8 +2979,7 @@ static void __free_frozen_pages(struct page *page, unsigned int order, migratetype =MIGRATE_MOVABLE ; } -if (unlikely ((fpi_flags &FPI_TRYLOCK ) &&IS_ENABLED (CONFIG_PREEMPT_RT ) - && (in_nmi () ||in_hardirq ()))) { +if (unlikely ((fpi_flags &FPI_TRYLOCK ) && !can_spin_trylock ())) {add_page_to_zone_llist (zone, page, order);return ; }
Sasha Levin
maintainerPATCH 1/1 mm/page_alloc: don't spin_trylock() in NMI on UP
From: Brendan Jackman <[email protected]>
[ Upstream commit 3105ae628fb785d48b49256468be4f21a7b3cfc0 ]
Patch series "mm/page_alloc: fixes for free_pages_nolock() on RT/UP".
Pre-existing bugs found by Sashiko during review of this other series:
https://lore.kernel.org/all/[email protected]/
I have not reproduced these bugs, and I suspect there is no real-world user that is affected by them.
This patch (of 2):
As noted in can_spin_trylock(), using this is unsafe in this context. commit 620b46ed6ae17 ("mm/page_alloc: return NULL early from alloc_frozen_pages_nolock() in NMI on UP") fixed this on the alloc side but missed the free side.
Impact: If BPF programs using these features in NMI (probably tracing) are present on non-SMP builds this might crash the kernel and is probably exploitable by local attackers for privilege escalation.
--- mm/page_alloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
mm/page_alloc.c +4 -2
@@ -2965,8 +2965,10 @@ static void __free_frozen_pages(struct page *page, unsigned int order, migratetype =MIGRATE_MOVABLE ; } -if (unlikely ((fpi_flags &FPI_TRYLOCK ) &&IS_ENABLED (CONFIG_PREEMPT_RT ) - && (in_nmi () ||in_hardirq ()))) { +if (unlikely ((fpi_flags &FPI_TRYLOCK ) && + ((IS_ENABLED (CONFIG_PREEMPT_RT ) && + (in_nmi () ||in_hardirq ())) || + (!IS_ENABLED (CONFIG_SMP ) &&in_nmi ())))) {add_page_to_zone_llist (zone, page, order);return ; }
Signature · 1 line
2.53.0