diff --git a/mm/kfence/core.c b/mm/kfence/core.c
index 5e4c1abc794f810a21e28d6af5128a89b74c484f..a477b7fb8aa331cf3bcf07fd3f27a7536bbecb8d 100644
--- a/mm/kfence/core.c
+++ b/mm/kfence/core.c
@@ -557,7 +557,7 @@ static unsigned long kfence_init_pool(void)
 	 * enters __slab_free() slow-path.
 	 */
 	for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) {
-		struct slab *slab = page_slab(&pages[i]);
+		struct slab *slab = page_slab(nth_page(pages, i));
 
 		if (!i || (i % 2))
 			continue;
@@ -603,7 +603,7 @@ static unsigned long kfence_init_pool(void)
 
 reset_slab:
 	for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) {
-		struct slab *slab = page_slab(&pages[i]);
+		struct slab *slab = page_slab(nth_page(pages, i));
 
 		if (!i || (i % 2))
 			continue;