aboutsummaryrefslogtreecommitdiffstats
diff options
authorThierry Reding <treding@nvidia.com>2026-04-30 09:32:13 +0200
committerThierry Reding <treding@nvidia.com>2026-04-30 09:32:13 +0200
commitc8c09a8db2e42e0b2bbd04b86c7c62c5246de1bd (patch)
treef9fbd9da9f77c0e2883b5348d02666e02434dd77
parentebc59fb706a4e408ef0c7822fbd2e4b6ec80a524 (diff)
parent5b31044e649e3e54c2caef135c09b371c2fbcd08 (diff)
downloadlinux-next-c8c09a8db2e42e0b2bbd04b86c7c62c5246de1bd.tar.gz
Merge branch 'slab/for-next-fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
-rw-r--r--mm/page_alloc.c5
-rw-r--r--mm/slub.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 71859993dd54d..23c7298d3be29 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7737,6 +7737,11 @@ struct page *alloc_frozen_pages_nolock_noprof(gfp_t gfp_flags, int nid, unsigned
*/
if (IS_ENABLED(CONFIG_PREEMPT_RT) && (in_nmi() || in_hardirq()))
return NULL;
+
+ /* On UP, spin_trylock() always succeeds even when it is locked */
+ if (!IS_ENABLED(CONFIG_SMP) && in_nmi())
+ return NULL;
+
if (!pcp_allowed_order(order))
return NULL;
diff --git a/mm/slub.c b/mm/slub.c
index 161079ac5ba12..0baa906f39ab8 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -5339,6 +5339,10 @@ void *kmalloc_nolock_noprof(size_t size, gfp_t gfp_flags, int node)
if (IS_ENABLED(CONFIG_PREEMPT_RT) && (in_nmi() || in_hardirq()))
return NULL;
+ /* On UP, spin_trylock() always succeeds even when it is locked */
+ if (!IS_ENABLED(CONFIG_SMP) && in_nmi())
+ return NULL;
+
retry:
if (unlikely(size > KMALLOC_MAX_CACHE_SIZE))
return NULL;