diff --git a/mm/percpu-km.c b/mm/percpu-km.c
index 2b79e43c626f..eb58aa4c0997 100644
--- a/mm/percpu-km.c
+++ b/mm/percpu-km.c
@@ -82,10 +82,13 @@ static void pcpu_destroy_chunk(struct pcpu_chunk *chunk)
 {
 	const int nr_pages = pcpu_group_sizes[0] >> PAGE_SHIFT;
 
+	if (!chunk)
+		return;
+
 	pcpu_stats_chunk_dealloc();
 	trace_percpu_destroy_chunk(chunk->base_addr);
 
-	if (chunk && chunk->data)
+	if (chunk->data)
 		__free_pages(chunk->data, order_base_2(nr_pages));
 	pcpu_free_chunk(chunk);
 }
diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c
index 7ad9d94bf547..15dab691ea70 100644
--- a/mm/percpu-vm.c
+++ b/mm/percpu-vm.c
@@ -352,10 +352,13 @@ static struct pcpu_chunk *pcpu_create_chunk(void)
 
 static void pcpu_destroy_chunk(struct pcpu_chunk *chunk)
 {
+	if (!chunk)
+		return;
+
 	pcpu_stats_chunk_dealloc();
 	trace_percpu_destroy_chunk(chunk->base_addr);
 
-	if (chunk && chunk->data)
+	if (chunk->data)
 		pcpu_free_vm_areas(chunk->data, pcpu_nr_groups);
 	pcpu_free_chunk(chunk);
 }