diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 266c4b5579463c177d8e9407e9eae6d45cad7037..0ea6510a3be715e99e312c211e32fc6bb9d9cbe7 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2835,6 +2835,9 @@ void deferred_split_huge_page(struct page *page)
 	if (PageSwapCache(page))
 		return;
 
+	if (!list_empty(page_deferred_list(page)))
+		return;
+
 	spin_lock_irqsave(&ds_queue->split_queue_lock, flags);
 	if (list_empty(page_deferred_list(page))) {
 		count_vm_event(THP_DEFERRED_SPLIT_PAGE);