tizen: packaging: Add baselibs.conf to provide 64-bit kernel & modules for 32-bit...
[platform/kernel/linux-rpi.git] / mm / memory-failure.c
index 75eb1d6..455093f 100644 (file)
@@ -595,10 +595,9 @@ struct task_struct *task_early_kill(struct task_struct *tsk, int force_early)
 /*
  * Collect processes when the error hit an anonymous page.
  */
-static void collect_procs_anon(struct page *page, struct list_head *to_kill,
-                               int force_early)
+static void collect_procs_anon(struct folio *folio, struct page *page,
+               struct list_head *to_kill, int force_early)
 {
-       struct folio *folio = page_folio(page);
        struct vm_area_struct *vma;
        struct task_struct *tsk;
        struct anon_vma *av;
@@ -633,12 +632,12 @@ static void collect_procs_anon(struct page *page, struct list_head *to_kill,
 /*
  * Collect processes when the error hit a file mapped page.
  */
-static void collect_procs_file(struct page *page, struct list_head *to_kill,
-                               int force_early)
+static void collect_procs_file(struct folio *folio, struct page *page,
+               struct list_head *to_kill, int force_early)
 {
        struct vm_area_struct *vma;
        struct task_struct *tsk;
-       struct address_space *mapping = page->mapping;
+       struct address_space *mapping = folio->mapping;
        pgoff_t pgoff;
 
        i_mmap_lock_read(mapping);
@@ -704,17 +703,17 @@ static void collect_procs_fsdax(struct page *page,
 /*
  * Collect the processes who have the corrupted page mapped to kill.
  */
-static void collect_procs(struct page *page, struct list_head *tokill,
-                               int force_early)
+static void collect_procs(struct folio *folio, struct page *page,
+               struct list_head *tokill, int force_early)
 {
-       if (!page->mapping)
+       if (!folio->mapping)
                return;
        if (unlikely(PageKsm(page)))
                collect_procs_ksm(page, tokill, force_early);
        else if (PageAnon(page))
-               collect_procs_anon(page, tokill, force_early);
+               collect_procs_anon(folio, page, tokill, force_early);
        else
-               collect_procs_file(page, tokill, force_early);
+               collect_procs_file(folio, page, tokill, force_early);
 }
 
 struct hwpoison_walk {
@@ -1602,7 +1601,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn,
         * mapped in dirty form.  This has to be done before try_to_unmap,
         * because ttu takes the rmap data structures down.
         */
-       collect_procs(hpage, &tokill, flags & MF_ACTION_REQUIRED);
+       collect_procs(folio, p, &tokill, flags & MF_ACTION_REQUIRED);
 
        if (PageHuge(hpage) && !PageAnon(hpage)) {
                /*
@@ -1772,7 +1771,7 @@ static int mf_generic_kill_procs(unsigned long long pfn, int flags,
         * SIGBUS (i.e. MF_MUST_KILL)
         */
        flags |= MF_ACTION_REQUIRED | MF_MUST_KILL;
-       collect_procs(&folio->page, &to_kill, true);
+       collect_procs(folio, &folio->page, &to_kill, true);
 
        unmap_and_kill(&to_kill, pfn, folio->mapping, folio->index, flags);
 unlock: