Interrupts are off during resume from RAM, this will triger a warning when allocate memory in non-preemptible context on RT since commit b5d5bc970f209 ("mm: Warn on memory allocation in non-preemptible context on RT"), exclude suspend from this warning check. Fixes: b5d5bc970f209 ("mm: Warn on memory allocation in non-preemptible context on RT") Signed-off-by: Liwei Song <liwei.song@xxxxxxxxxxxxx> --- mm/slub.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 1929645daa53..ebff24ae50ea 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2771,7 +2771,8 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, unsigned long tid; if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP)) - WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING); + WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING && + system_state != SYSTEM_SUSPEND); s = slab_pre_alloc_hook(s, gfpflags); if (!s) @@ -3236,7 +3237,8 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, int i; if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP)) - WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING); + WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING && + system_state != SYSTEM_SUSPEND); /* memcg and kmem_cache debug support */ s = slab_pre_alloc_hook(s, flags); -- 2.17.1