void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc);
 void folio_migrate_ksm(struct folio *newfolio, struct folio *folio);
-
-#ifdef CONFIG_MEMORY_FAILURE
-void collect_procs_ksm(struct page *page, struct list_head *to_kill,
-                      int force_early);
-#endif
-
-#ifdef CONFIG_PROC_FS
+void collect_procs_ksm(struct folio *folio, struct page *page,
+               struct list_head *to_kill, int force_early);
 long ksm_process_profit(struct mm_struct *);
-#endif /* CONFIG_PROC_FS */
 
 #else  /* !CONFIG_KSM */
 
 {
 }
 
-#ifdef CONFIG_MEMORY_FAILURE
-static inline void collect_procs_ksm(struct page *page,
+static inline void collect_procs_ksm(struct folio *folio, struct page *page,
                                     struct list_head *to_kill, int force_early)
 {
 }
-#endif
 
 #ifdef CONFIG_MMU
 static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
 
 /*
  * Collect processes when the error hit an ksm page.
  */
-void collect_procs_ksm(struct page *page, struct list_head *to_kill,
-                      int force_early)
+void collect_procs_ksm(struct folio *folio, struct page *page,
+               struct list_head *to_kill, int force_early)
 {
        struct ksm_stable_node *stable_node;
        struct ksm_rmap_item *rmap_item;
-       struct folio *folio = page_folio(page);
        struct vm_area_struct *vma;
        struct task_struct *tsk;
 
 
        if (!folio->mapping)
                return;
        if (unlikely(folio_test_ksm(folio)))
-               collect_procs_ksm(page, tokill, force_early);
+               collect_procs_ksm(folio, page, tokill, force_early);
        else if (folio_test_anon(folio))
                collect_procs_anon(folio, page, tokill, force_early);
        else