diff --git a/mm/slub.c b/mm/slub.c
index 65a0a5c57f313dbfc0abc5c56069593f93313ac7..d05a5483106dff128aa1c476d0ccdc707c8cddb7 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2326,8 +2326,6 @@ redo:
 	if (freelist)
 		goto load_freelist;
 
-	stat(s, ALLOC_SLOWPATH);
-
 	freelist = get_freelist(s, page);
 
 	if (!freelist) {
@@ -2432,10 +2430,10 @@ redo:
 
 	object = c->freelist;
 	page = c->page;
-	if (unlikely(!object || !node_match(page, node)))
+	if (unlikely(!object || !node_match(page, node))) {
 		object = __slab_alloc(s, gfpflags, node, addr, c);
-
-	else {
+		stat(s, ALLOC_SLOWPATH);
+	} else {
 		void *next_object = get_freepointer_safe(s, object);
 
 		/*