Message ID | 20170609215944.31986.32841.stgit@gimli.home (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 09/06/2017 23:59, Alex Williamson wrote: > Unset-KVM and decrement-assignment only when we find the group in our > list. Otherwise we can get out of sync if the user triggers this for > groups that aren't currently on our list. > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > --- > virt/kvm/vfio.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c > index d32f239eb471..db9036ef8c73 100644 > --- a/virt/kvm/vfio.c > +++ b/virt/kvm/vfio.c > @@ -201,18 +201,16 @@ static int kvm_vfio_set_group(struct kvm_device *dev, long attr, u64 arg) > continue; > > list_del(&kvg->node); > + kvm_arch_end_assignment(dev->kvm); > + kvm_vfio_group_set_kvm(kvg->vfio_group, NULL); > kvm_vfio_group_put_external_user(kvg->vfio_group); > kfree(kvg); > ret = 0; > break; > } > > - kvm_arch_end_assignment(dev->kvm); > - > mutex_unlock(&kv->lock); > > - kvm_vfio_group_set_kvm(vfio_group, NULL); > - > kvm_vfio_group_put_external_user(vfio_group); > > kvm_vfio_update_coherency(dev); > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Should these two patches be applied to stable kernels too? In any case, please take care your self of getting these to Linus! Thanks, Paolo
Hi Alex, On 09/06/2017 23:59, Alex Williamson wrote: > Unset-KVM and decrement-assignment only when we find the group in our > list. Otherwise we can get out of sync if the user triggers this for > groups that aren't currently on our list. > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > --- > virt/kvm/vfio.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) This patch and 3/7 do not apply on 4.12-rc5 as there are small conflicts with commit 121f80ba68f1a5779a36d7b3247206e60e0a7418 KVM: PPC: VFIO: Add in-kernel acceleration for VFIO Besides Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric > > diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c > index d32f239eb471..db9036ef8c73 100644 > --- a/virt/kvm/vfio.c > +++ b/virt/kvm/vfio.c > @@ -201,18 +201,16 @@ static int kvm_vfio_set_group(struct kvm_device *dev, long attr, u64 arg) > continue; > > list_del(&kvg->node); > + kvm_arch_end_assignment(dev->kvm); > + kvm_vfio_group_set_kvm(kvg->vfio_group, NULL); > kvm_vfio_group_put_external_user(kvg->vfio_group); > kfree(kvg); > ret = 0; > break; > } > > - kvm_arch_end_assignment(dev->kvm); > - > mutex_unlock(&kv->lock); > > - kvm_vfio_group_set_kvm(vfio_group, NULL); > - > kvm_vfio_group_put_external_user(vfio_group); > > kvm_vfio_update_coherency(dev); >
diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c index d32f239eb471..db9036ef8c73 100644 --- a/virt/kvm/vfio.c +++ b/virt/kvm/vfio.c @@ -201,18 +201,16 @@ static int kvm_vfio_set_group(struct kvm_device *dev, long attr, u64 arg) continue; list_del(&kvg->node); + kvm_arch_end_assignment(dev->kvm); + kvm_vfio_group_set_kvm(kvg->vfio_group, NULL); kvm_vfio_group_put_external_user(kvg->vfio_group); kfree(kvg); ret = 0; break; } - kvm_arch_end_assignment(dev->kvm); - mutex_unlock(&kv->lock); - kvm_vfio_group_set_kvm(vfio_group, NULL); - kvm_vfio_group_put_external_user(vfio_group); kvm_vfio_update_coherency(dev);
Unset-KVM and decrement-assignment only when we find the group in our list. Otherwise we can get out of sync if the user triggers this for groups that aren't currently on our list. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> --- virt/kvm/vfio.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)