* + mm-khugepaged-fix-conflicting-mods-to-collapse_file.patch added to mm-unstable branch
@ 2023-04-24 22:07 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2023-04-24 22:07 UTC (permalink / raw)
To: mm-commits, stevensd, jiaqiyan, ivan.orlov0322, hughd, akpm
The patch titled
Subject: mm/khugepaged: fix conflicting mods to collapse_file()
has been added to the -mm mm-unstable branch. Its filename is
mm-khugepaged-fix-conflicting-mods-to-collapse_file.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-khugepaged-fix-conflicting-mods-to-collapse_file.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Hugh Dickins <hughd@google.com>
Subject: mm/khugepaged: fix conflicting mods to collapse_file()
Date: Sat, 22 Apr 2023 21:47:20 -0700 (PDT)
Inserting Ivan Orlov's syzbot fix commit 2ce0bdfebc74
("mm: khugepaged: fix kernel BUG in hpage_collapse_scan_file()")
ahead of Jiaqi Yan's and David Stevens's commits
12904d953364 ("mm/khugepaged: recover from poisoned file-backed memory")
cae106dd67b9 ("mm/khugepaged: refactor collapse_file control flow")
ac492b9c70ca ("mm/khugepaged: skip shmem with userfaultfd")
(all of which restructure collapse_file()) did not work out well.
xfstests generic/086 on huge tmpfs (with accelerated khugepaged) freezes
(if not on the first attempt, then the 2nd or 3rd) in find_lock_entries()
while doing drop_caches: the file's xarray seems to have been corrupted,
with find_get_entry() returning nonsense which makes no progress.
Bisection led to ac492b9c70ca; and diff against earlier working linux-next
suggested that it's probably down to an errant xas_store(), which does not
belong with the later changes (and nor does the positioning of warnings).
The later changes look as if they fix the syzbot issue independently.
Remove most of what's left of 2ce0bdfebc74: just leave one WARN_ON_ONCE
(xas_error) after the final xas_store() of the multi-index entry.
Link: https://lkml.kernel.org/r/b6c881-c352-bb91-85a8-febeb09dfd71@google.com
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: David Stevens <stevensd@chromium.org>
Cc: Ivan Orlov <ivan.orlov0322@gmail.com>
Cc: Jiaqi Yan <jiaqiyan@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/khugepaged.c | 23 +----------------------
1 file changed, 1 insertion(+), 22 deletions(-)
--- a/mm/khugepaged.c~mm-khugepaged-fix-conflicting-mods-to-collapse_file
+++ a/mm/khugepaged.c
@@ -1941,16 +1941,6 @@ static int collapse_file(struct mm_struc
result = SCAN_FAIL;
goto xa_locked;
}
- xas_store(&xas, hpage);
- if (xas_error(&xas)) {
- /* revert shmem_charge performed
- * in the previous condition
- */
- mapping->nrpages--;
- shmem_uncharge(mapping->host, 1);
- result = SCAN_STORE_FAILED;
- goto xa_locked;
- }
nr_none++;
continue;
}
@@ -2105,13 +2095,6 @@ static int collapse_file(struct mm_struc
* Accumulate the pages that are being collapsed.
*/
list_add_tail(&page->lru, &pagelist);
-
- /*
- * We can't get an ENOMEM here (because the allocation happened
- * before) but let's check for errors (XArray implementation
- * can be changed in the future)
- */
- WARN_ON_ONCE(xas_error(&xas));
continue;
out_unlock:
unlock_page(page);
@@ -2134,11 +2117,6 @@ out_unlock:
}
}
- /* Here we can't get an ENOMEM (because entries were
- * previously allocated) But let's check for errors
- * (XArray implementation can be changed in the future)
- */
- WARN_ON_ONCE(xas_error(&xas));
xa_locked:
xas_unlock_irq(&xas);
xa_unlocked:
@@ -2259,6 +2237,7 @@ immap_locked:
/* Join all the small entries into a single multi-index entry. */
xas_set_order(&xas, start, HPAGE_PMD_ORDER);
xas_store(&xas, hpage);
+ WARN_ON_ONCE(xas_error(&xas));
xas_unlock_irq(&xas);
/*
_
Patches currently in -mm which might be from hughd@google.com are
mm-khugepaged-fix-conflicting-mods-to-collapse_file.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-04-24 22:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-24 22:07 + mm-khugepaged-fix-conflicting-mods-to-collapse_file.patch added to mm-unstable branch Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.