• Vipin Sharma's avatar
    KVM: Move VM's worker kthreads back to the original cgroup before exiting. · e45cce30
    Vipin Sharma authored
    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: default avatarVipin Sharma <vipinsh@google.com>
    Suggested-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20220222054848.563321-1-vipinsh@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    e45cce30
kvm_main.c 146 KB