test_kvm_device() creates a VM to probe the GIC version under test and returns without freeing it when the probe fails, in vgic_init and in its vgic_v5 copy. Free it on that path. Signed-off-by: Fuad Tabba --- tools/testing/selftests/kvm/arm64/vgic_init.c | 4 +++- tools/testing/selftests/kvm/arm64/vgic_v5.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/arm64/vgic_init.c b/tools/testing/selftests/kvm/arm64/vgic_init.c index 47e34b43afb29..53894d32b0fc8 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_init.c +++ b/tools/testing/selftests/kvm/arm64/vgic_init.c @@ -732,8 +732,10 @@ int test_kvm_device(u32 gic_dev_type) /* trial mode */ ret = __kvm_test_create_device(v.vm, gic_dev_type); - if (ret) + if (ret) { + kvm_vm_free(v.vm); return ret; + } v.gic_fd = kvm_create_device(v.vm, gic_dev_type); ret = __kvm_create_device(v.vm, gic_dev_type); diff --git a/tools/testing/selftests/kvm/arm64/vgic_v5.c b/tools/testing/selftests/kvm/arm64/vgic_v5.c index 96cfd6bb32f6f..10fdfe362428b 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_v5.c +++ b/tools/testing/selftests/kvm/arm64/vgic_v5.c @@ -187,8 +187,10 @@ int test_kvm_device(u32 gic_dev_type) /* trial mode */ ret = __kvm_test_create_device(v.vm, gic_dev_type); - if (ret) + if (ret) { + kvm_vm_free(v.vm); return ret; + } v.gic_fd = kvm_create_device(v.vm, gic_dev_type); ret = __kvm_create_device(v.vm, gic_dev_type); -- 2.39.5