]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: sefltests: Verify value of dirty_log_test last page isn't bogus
authorSean Christopherson <seanjc@google.com>
Sat, 11 Jan 2025 00:29:59 +0000 (16:29 -0800)
committerSean Christopherson <seanjc@google.com>
Wed, 12 Feb 2025 17:00:56 +0000 (09:00 -0800)
Add a sanity check that a completely garbage value wasn't written to
the last dirty page in the ring, e.g. that it doesn't contain the *next*
iteration's value.

Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Link: https://lore.kernel.org/r/20250111003004.1235645-16-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
tools/testing/selftests/kvm/dirty_log_test.c

index 3a4e411353d7d7cfda053513cf8bb007f6715c0a..500257b712e3f7c55b4392e6ea1927729c390761 100644 (file)
@@ -514,8 +514,9 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long **bmap)
                                 * last page's iteration), as the value to be
                                 * written may be cached in a CPU register.
                                 */
-                               if (page == dirty_ring_last_page ||
-                                   page == dirty_ring_prev_iteration_last_page)
+                               if ((page == dirty_ring_last_page ||
+                                    page == dirty_ring_prev_iteration_last_page) &&
+                                   val < iteration)
                                        continue;
                        } else if (!val && iteration == 1 && bmap0_dirty) {
                                /*