Patch "KVM: arm/arm64: Stop leaking vcpu pid references" has been added to the 4.6-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
KVM: arm/arm64: Stop leaking vcpu pid references
to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-arm-arm64-stop-leaking-vcpu-pid-references.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
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: KVM: arm/arm64: Stop leaking vcpu pid references
From: James Morse <[email protected]>
commit 591d215afcc2f94e8e2c69a63c924c044677eb31 upstream.
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 + 1 file changed, 1 insertion(+)
arch/arm/kvm/arm.c +1 -0
@@ -267,6 +267,7 @@ void kvm_arch_vcpu_free(struct kvm_vcpukvm_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); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/arm64-kernel-save-and-restore-uao-and-addr_limit-on-exception-entry.patch queue-4.6/kvm-arm-arm64-stop-leaking-vcpu-pid-references.patch queue-4.6/arm64-fix-dump_instr-when-pan-and-uao-are-in-use.patch