summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Ashton <joshua@froggi.es>2024-02-05 17:26:11 +0000
committerJoshua Ashton <joshua@froggi.es>2024-02-05 17:26:11 +0000
commit49a9c3e11b34483cb65bbe8f21bd57dce67326c9 (patch)
tree7ab070a9dbb5085d8c0975ff2201ab8f45bfe5d9
parent6b767b0cee32cb1d0fe708d21e9331ea06020cdd (diff)
parent2da48b862b2806bce4af6321187ca12f53206ee7 (diff)
downloadlinux-49a9c3e11b34483cb65bbe8f21bd57dce67326c9.tar.gz
Merge branch 'compaction' into 'frog/6.1.52'
Add bug fix for Soft-Dirty bug when compaction happens and fix for CI

See merge request jupiter/linux-integration!39
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--mm/migrate.c8
2 files changed, 7 insertions, 3 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 64b3c02e7cc8..9fcec6064edd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ variables:
   LINUX_FIRMWARE_URL: "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"
   LINUX_FIRMWARE_DL_DIR: "dl/linux-firmware"
   ROOTFS_NAME: "stretch.img"
-  ROOTFS_IMAGE_URL: "https://gitlab.steamos.cloud/api/v4/projects/kernel-research%2Frootfs/jobs/128684/artifacts"
+  ROOTFS_IMAGE_URL: "https://gitlab.steamos.cloud/api/v4/projects/kernel-research%2Frootfs/jobs/129183/artifacts"
   GIT_AUTHOR_NAME: "Gitlab-ci"
   GIT_AUTHOR_EMAIL: "gitlab@gitlab.steamos.cloud"
   TAG: CI_${CI_PIPELINE_ID}_${CI_COMMIT_SHORT_SHA}
diff --git a/mm/migrate.c b/mm/migrate.c
index 8d5c0dc618a5..1a5a32a2cb62 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -200,8 +200,6 @@ static bool remove_migration_pte(struct folio *folio,
 
 		folio_get(folio);
 		pte = mk_pte(new, READ_ONCE(vma->vm_page_prot));
-		if (pte_swp_soft_dirty(*pvmw.pte))
-			pte = pte_mksoft_dirty(pte);
 
 		/*
 		 * Recheck VMA as permissions can change since migration started
@@ -211,6 +209,12 @@ static bool remove_migration_pte(struct folio *folio,
 			pte = pte_mkold(pte);
 		if (folio_test_dirty(folio) && is_migration_entry_dirty(entry))
 			pte = pte_mkdirty(pte);
+
+		if (pte_swp_soft_dirty(*pvmw.pte))
+			pte = pte_mksoft_dirty(pte);
+		else
+			pte = pte_clear_soft_dirty(pte);
+
 		if (is_writable_migration_entry(entry))
 			pte = maybe_mkwrite(pte, vma);
 		else if (pte_swp_uffd_wp(*pvmw.pte))