KVM: Discard zero mask with function kvm_dirty_ring_reset
authorBibo Mao <maobibo@loongson.cn>
Thu, 13 Jun 2024 12:28:03 +0000 (20:28 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 20 Jun 2024 21:20:11 +0000 (17:20 -0400)
Function kvm_reset_dirty_gfn may be called with parameters cur_slot /
cur_offset / mask are all zero, it does not represent real dirty page.
It is not necessary to clear dirty page in this condition. Also return
value of macro __fls() is undefined if mask is zero which is called in
funciton kvm_reset_dirty_gfn(). Here just return.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Message-ID: <20240613122803.1031511-1-maobibo@loongson.cn>
[Move the conditional inside kvm_reset_dirty_gfn; suggested by
 Sean Christopherson. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/dirty_ring.c

index 86d267db87bb13b6bb7050b0325415abf21eea2e..7bc74969a819afb5198fc2dfb7c9e83b80f967e0 100644 (file)
@@ -55,6 +55,9 @@ static void kvm_reset_dirty_gfn(struct kvm *kvm, u32 slot, u64 offset, u64 mask)
        struct kvm_memory_slot *memslot;
        int as_id, id;
 
+       if (!mask)
+               return;
+
        as_id = slot >> 16;
        id = (u16)slot;