diff options
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/slub.c b/mm/slub.c index 6589b41d5a60..5711d6c0cb7f 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2707,6 +2707,9 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, struct page *page; unsigned long tid; + if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP)) + WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING); + s = slab_pre_alloc_hook(s, gfpflags); if (!s) return NULL; @@ -3168,6 +3171,9 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, struct kmem_cache_cpu *c; int i; + if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP)) + WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING); + /* memcg and kmem_cache debug support */ s = slab_pre_alloc_hook(s, flags); if (unlikely(!s)) |