kvm/eventfd: use list_for_each_entry when deassign ioeventfd

Simpify kvm_deassign_ioeventfd_idx to use list_for_each_entry as the
loop just ends at the entry that's found and deleted.

Note, coalesced_mmio_ops and ioeventfd_ops are the only instances of
kvm_io_device_ops that implement a destructor, all other callers of
kvm_io_bus_unregister_dev() are unaffected by this change.

Suggested-by: Michal Luczaj <mhal@rbox.co>
Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Link: https://lore.kernel.org/r/20230207123713.3905-3-wei.w.wang@intel.com
[sean: call out that only select users implement a destructor]
Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
Wei Wang
2023-02-07 20:37:13 +08:00
committed by Sean Christopherson
parent 5ea5ca3c2b
commit cc77b95acf

View File

@@ -901,7 +901,7 @@ static int
kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx, kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx,
struct kvm_ioeventfd *args) struct kvm_ioeventfd *args)
{ {
struct _ioeventfd *p, *tmp; struct _ioeventfd *p;
struct eventfd_ctx *eventfd; struct eventfd_ctx *eventfd;
struct kvm_io_bus *bus; struct kvm_io_bus *bus;
int ret = -ENOENT; int ret = -ENOENT;
@@ -915,8 +915,7 @@ kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx,
mutex_lock(&kvm->slots_lock); mutex_lock(&kvm->slots_lock);
list_for_each_entry_safe(p, tmp, &kvm->ioeventfds, list) { list_for_each_entry(p, &kvm->ioeventfds, list) {
if (p->bus_idx != bus_idx || if (p->bus_idx != bus_idx ||
p->eventfd != eventfd || p->eventfd != eventfd ||
p->addr != args->addr || p->addr != args->addr ||