Message ID | 20220826110029.59382-1-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Series | KVM: dirty ring: add missing memory barrier | expand |
Yikes no, the patch is obviously bogus. Paolo Il ven 26 ago 2022, 17:59 Philippe Mathieu-Daudé <f4bug@amsat.org> ha scritto: > Hi Paolo, > > On Fri, Aug 26, 2022 at 1:17 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > >> The KVM_DIRTY_GFN_F_DIRTY flag ensures that the entry is valid. If >> the read of the fields are not ordered after the read of the flag, >> QEMU might see stale values. >> >> Cc: Peter Xu <peterx@redhat.com> >> Cc: Gavin Shan <gshan@redhat.com> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- >> accel/kvm/kvm-all.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c >> index 8d81ab74de..f49643cd24 100644 >> --- a/accel/kvm/kvm-all.c >> +++ b/accel/kvm/kvm-all.c >> @@ -719,7 +719,7 @@ static void kvm_dirty_ring_mark_page(KVMState *s, >> uint32_t as_id, >> >> static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn) >> { >> - return gfn->flags == KVM_DIRTY_GFN_F_DIRTY; >> + return qatomic_load_acquire(&gfn->flags, KVM_DIRTY_GFN_F_DIRTY); >> > > Is this patch based on another which changes the qatomic_load_acquire() > prototype? > > >> } >> >> static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn) >> -- >> 2.37.1 >> >> >>
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 8d81ab74de..f49643cd24 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -719,7 +719,7 @@ static void kvm_dirty_ring_mark_page(KVMState *s, uint32_t as_id, static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn) { - return gfn->flags == KVM_DIRTY_GFN_F_DIRTY; + return qatomic_load_acquire(&gfn->flags, KVM_DIRTY_GFN_F_DIRTY); } static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn)
The KVM_DIRTY_GFN_F_DIRTY flag ensures that the entry is valid. If the read of the fields are not ordered after the read of the flag, QEMU might see stale values. Cc: Peter Xu <peterx@redhat.com> Cc: Gavin Shan <gshan@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- accel/kvm/kvm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)