]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: Move VM's worker kthreads back to the original cgroup before exiting.
authorVipin Sharma <vipinsh@google.com>
Tue, 22 Feb 2022 05:48:48 +0000 (05:48 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 25 Feb 2022 13:20:14 +0000 (08:20 -0500)
commit8cf537f5b1019a9021a50e0322a8ace08bafd4df
treea8f1fc422944339c98ca664b5acda407ad68d56b
parenta1cce3580e9afde0ea9a446717cd4d76eb6b9bdd
KVM: Move VM's worker kthreads back to the original cgroup before exiting.

VM worker kthreads can linger in the VM process's cgroup for sometime
after KVM terminates the VM process.

KVM terminates the worker kthreads by calling kthread_stop() which waits
on the 'exited' completion, triggered by exit_mm(), via mm_release(), in
do_exit() during the kthread's exit.  However, these kthreads are
removed from the cgroup using the cgroup_exit() which happens after the
exit_mm(). Therefore, A VM process can terminate in between the
exit_mm() and cgroup_exit() calls, leaving only worker kthreads in the
cgroup.

Moving worker kthreads back to the original cgroup (kthreadd_task's
cgroup) makes sure that the cgroup is empty as soon as the main VM
process is terminated.

Signed-off-by: Vipin Sharma <vipinsh@google.com>
Suggested-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220222054848.563321-1-vipinsh@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c