diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index c436fd390296faa34a8b169a72350951cfc77106..8a74b9705a655cf5809003bf7d92edc983c4dddc 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -2079,6 +2079,8 @@ static void khugepaged_do_scan(void)
 
 	barrier(); /* write khugepaged_pages_to_scan to local stack */
 
+	lru_add_drain_all();
+
 	while (progress < pages) {
 		if (!khugepaged_prealloc_page(&hpage, &wait))
 			break;