Two x86 selftests create a VM and then take an early return that skips the kvm_vm_free() at the end of the function.
Patch 1 is the plain-SEV path of sev_smoke_test(), which returns straight out of the UCALL_DONE case instead of leaving the loop. The SEV-ES path next to it breaks out and frees correctly. Patch 2 is nx_huge_pages_test, which returns as soon as it has confirmed that disabling NX huge pages is denied without CAP_SYS_BOOT. This one is not an unusual error path: nx_huge_pages_test.sh runs the test without CAP_SYS_BOOT for any non-root user, so a normal run always takes it. Neither leak causes a failure today, since the process exits shortly afterwards. They do mean those paths never exercise VM teardown. The two patches are independent and either can be applied on its own. Found by auditing every function under tools/testing/selftests/kvm/ that creates a VM and later calls kvm_vm_free(), looking for returns in between. Seven other hits were false positives, mostly returns after REPORT_GUEST_ASSERT() or TEST_FAIL(), which abort the process and make the return unreachable. Two more that do look real, in get-reg-list.c and arm64/external_aborts.c, are left out here because they belong to different maintainers. Compile-tested only. This host has neither SEV (kvm_amd sev=N) nor hugetlb configured, so both tests SKIP rather than run. Note patch 1 touches sev_smoke_test.c, which an unrelated patch I sent earlier also touches [1]. They modify different functions, do not conflict, and neither depends on the other. [1] https://lore.kernel.org/all/[email protected]/ Gokul K (2): KVM: selftests: Free the VM when the SEV smoke test's guest completes KVM: selftests: Free the VM when NX hugepage disabling is denied tools/testing/selftests/kvm/x86/nx_huge_pages_test.c | 1 + tools/testing/selftests/kvm/x86/sev_smoke_test.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) -- 2.54.0

