summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudio Imbrenda <imbrenda@linux.ibm.com>2026-06-23 17:33:24 +0200
committerClaudio Imbrenda <imbrenda@linux.ibm.com>2026-06-24 10:08:56 +0200
commite6c9b322c8cb3c08270f05e2faabd7c0cc82f809 (patch)
tree32a1e0454e5c113f68d8923e03d96e5021a68c60
parent7a386efcb2bf986e0c9011e92a78aed0870b08cf (diff)
downloadlwn-e6c9b322c8cb3c08270f05e2faabd7c0cc82f809.tar.gz
lwn-e6c9b322c8cb3c08270f05e2faabd7c0cc82f809.zip
KVM: s390: Do not set special large pages dirty
Special pages / folios should not be set dirty. This also applies to large pages. Add a missing check in gmap_clear_young_crste() to prevent setting the large page dirty if it is a special page. Fixes: a2c17f9270cc ("KVM: s390: New gmap code") Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-ID: <20260623153331.233784-4-imbrenda@linux.ibm.com>
-rw-r--r--arch/s390/kvm/gmap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/kvm/gmap.c b/arch/s390/kvm/gmap.c
index 52d55ddea8d4..3192f610f696 100644
--- a/arch/s390/kvm/gmap.c
+++ b/arch/s390/kvm/gmap.c
@@ -327,7 +327,7 @@ static long gmap_clear_young_crste(union crste *crstep, gfn_t gfn, gfn_t end, st
new.h.i = 1;
new.s.fc1.y = 0;
new.s.fc1.prefix_notif = 0;
- if (new.s.fc1.d || !new.h.p)
+ if ((new.s.fc1.d || !new.h.p) && !new.s.fc1.s)
folio_set_dirty(phys_to_folio(crste_origin_large(crste)));
new.s.fc1.d = 0;
new.h.p = 1;