FAILED: patch "[PATCH] KVM: arm/arm64: Stop leaking vcpu pid references" failed to apply to 3.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 3.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
591d215afcc2f94e8e2c69a63c924c044677eb31Mon Sep 17 00:00:00 2001
From: James Morse <[email protected]>
Date: Wed, 8 Jun 2016 17:24:45 +0100
Subject: [PATCH] KVM: arm/arm64: Stop leaking vcpu pid references
kvm provides kvm_vcpu_uninit(), which amongst other things, releases the last reference to the struct pid of the task that was last running the vcpu.
On arm64 built with CONFIG_DEBUG_KMEMLEAK, starting a guest with kvmtool, then killing it with SIGKILL results (after some considerable time) in:
Quoted 4 lines
cat
/sys/kernel/debug/kmemleak
unreferenced object0xffff80007d5ea080(size 128):
comm "lkvm", pid 2025, jiffies 4294942645 (age 1107.776s) hex dump (first 32 bytes):
Quoted 12 lines
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffff8000001b30ec>] create_object+0xfc/0x278 [<ffff80000071da34>] kmemleak_alloc+0x34/0x70 [<ffff80000019fa2c>] kmem_cache_alloc+0x16c/0x1d8 [<ffff8000000d0474>] alloc_pid+0x34/0x4d0 [<ffff8000000b5674>] copy_process.isra.6+0x79c/0x1338 [<ffff8000000b633c>] _do_fork+0x74/0x320 [<ffff8000000b66b0>] SyS_clone+0x18/0x20 [<ffff800000085cb0>] el0_svc_naked+0x24/0x28 [<ffffffffffffffff>] 0xffffffffffffffff
On x86 kvm_vcpu_uninit() is called on the path from kvm_arch_destroy_vm(), on arm no equivalent call is made. Add the call to kvm_arch_vcpu_free().
arch/arm/kvm/arm.c +1 -0
@@ -263,6 +263,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu)kvm_timer_vcpu_terminate (vcpu);kvm_vgic_vcpu_destroy (vcpu);kvm_pmu_vcpu_destroy (vcpu); +kvm_vcpu_uninit (vcpu);kmem_cache_free (kvm_vcpu_cache, vcpu); }