KVM: Don't set Accessed/Dirty bits for ZERO_PAGE
authorSean Christopherson <seanjc@google.com>
Fri, 29 Apr 2022 01:04:09 +0000 (01:04 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:44 +0000 (14:23 +0200)
commit26cdeedbb616227d926a98e7232930f85f7123ca
treec2c8c4dab7794c1e4f069cb8876d7632ba0f4085
parentd56c5eac8476a08aa3ca6d900f3ecfefcd283372
KVM: Don't set Accessed/Dirty bits for ZERO_PAGE

[ Upstream commit a1040b0d42acf69bb4f6dbdc54c2dcd78eea1de5 ]

Don't set Accessed/Dirty bits for a struct page with PG_reserved set,
i.e. don't set A/D bits for the ZERO_PAGE.  The ZERO_PAGE (or pages
depending on the architecture) should obviously never be written, and
similarly there's no point in marking it accessed as the page will never
be swapped out or reclaimed.  The comment in page-flags.h is quite clear
that PG_reserved pages should be managed only by their owner, and
strictly following that mandate also simplifies KVM's logic.

Fixes: 7df003c85218 ("KVM: fix overflow of zero page refcount with ksm running")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220429010416.2788472-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
virt/kvm/kvm_main.c