selftests/bpf: fix bpf_loop_bench for new callback verification scheme
[platform/kernel/linux-starfive.git] / virt / kvm / eventfd.c
index b0af834..89912a1 100644 (file)
@@ -889,9 +889,9 @@ static int kvm_assign_ioeventfd_idx(struct kvm *kvm,
 
 unlock_fail:
        mutex_unlock(&kvm->slots_lock);
+       kfree(p);
 
 fail:
-       kfree(p);
        eventfd_ctx_put(eventfd);
 
        return ret;
@@ -901,7 +901,7 @@ static int
 kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx,
                           struct kvm_ioeventfd *args)
 {
-       struct _ioeventfd        *p, *tmp;
+       struct _ioeventfd        *p;
        struct eventfd_ctx       *eventfd;
        struct kvm_io_bus        *bus;
        int                       ret = -ENOENT;
@@ -915,8 +915,7 @@ kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx,
 
        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 ||
                    p->eventfd != eventfd  ||
                    p->addr != args->addr  ||
@@ -931,7 +930,6 @@ kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx,
                bus = kvm_get_bus(kvm, bus_idx);
                if (bus)
                        bus->ioeventfd_count--;
-               ioeventfd_release(p);
                ret = 0;
                break;
        }