On Thu, Feb 17, 2022, Paolo Bonzini wrote: > On 2/17/22 13:34, kernel test robot wrote: > > > 5859 reattach_err = cgroup_attach_task_all(current->real_parent, current); > > This needs to be within rcu_dereference(). As Vipin found out the hard way, cgroup_attach_task_all() can't be inside an RCU critical section as it might sleep due to mutex_lock(). My sched knowledge is sketchy at best, but I believe KVM just needs to guarantee the liveliness of real_parent when passing it to cgroup_attach_task_all(). Presumably kthreadd_task can (in theory) be killed/exiting while this is going on, but at that point I doubt anyone cares much about cgroup accuracy. So I think this can be: rcu_read_lock(); parent = rcu_dereference(current->real_parent); get_task_struct(parent); rcu_read_unlock(); (void)cgroup_attach_task_all(parent, current); put_task_struct(parent); > > 5860 if (reattach_err) { > > 5861 kvm_err("%s: cgroup_attach_task_all failed on reattach with err %d\n", > > 5862 __func__, reattach_err); Eh, I wouldn't bother logging the error, userspace can't take action on it, and if the system is OOM it's just more noise in the log to dig through.