On Tue, 3 Mar 2020 15:22:00 -0800 Shakeel Butt <shakeelb@xxxxxxxxxx> wrote: > > doesn't corrupt its state. > > > > I.e. this is safe: > > > > process: interrupt: > > old = current->active_memcg > > old = current->active_memcg > > current->active_memcg = new > > allocate > > current->active_memcg = old > > current->active_memcg = new > > return old > > > > This is safe as well: > > > > process: interrupt: > > old = current->active_memcg > > current->active_memcg = new > > old = current->active_memcg > > current->active_memcg = new > > allocate > > current->active_memcg = old > > return old > > Yes, you are right. Thanks for the explanation. Thanks, all. Dan, I dropped the three-patch series loop-use-worker-per-cgroup-instead-of-kworker.patch mm-charge-active-memcg-when-no-mm-is-set.patch loop-charge-i-o-to-mem-and-blk-cg.patch When convenient, could you please prepend Johannes' patch to the series, retest and resend? While doing so, please figure out why you didn't also see this warning in your testing and make the appropriate changes! Thanks.