diff --git a/mm/slub.c b/mm/slub.c
index ef60536c5d697e527cc890b1174d016f7bb91e0e..33f71330e713d2ccb10c0fa2c656b6f5d870bd6b 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2374,7 +2374,7 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s,
 
 	object = c->freelist;
 	page = c->page;
-	if (unlikely(!object || !node_match(page, node)))
+	if (unlikely(!object || !page || !node_match(page, node)))
 		object = __slab_alloc(s, gfpflags, node, addr, c);
 
 	else {