On Wed, Jan 19, 2022 at 10:49:57AM -0800, Vipin Sharma wrote: > Sean suggested that we can use the real_parent of the kthread task > which will always be kthreadd_task, this will also not require any > changes in the cgroup API. I like that approach, I will give it a try. > This will avoid changes in cgroup APIs completely. Yeah, that's better than the original but still not great in that it's still a workaround and just pushes up the problem. You can get the same race if the cgroups are nested. e.g. if you have a kvm instance under a/b and when kvm exits, the management software removes b and then realizes that a is empty too and then tries to delete that too. It'd be great if we can make kthread_stop actually wait for what most others consider thread exit but if we're just gonna work around them, just doing it in userspace might be better - e.g. after kvm exits, wait for !populated event (this is a pollable event) on the cgroup and then clean up. Thanks. -- tejun