While running f853d89 from git://github.com/glommer/linux.git , I hit alockdep issue. To create this I allocated and held reference to somekmem in the context of a kmem limited memcg. Then I moved theallocating process out of memcg and then deleted the memcg. Due to thekmem reference the struct mem_cgroup is still active but invisible incgroupfs namespace. No problems yet. Then I killed the user processwhich freed the kmem from the now unlinked memcg. Dropping the kmemcaused the memcg ref to hit zero. Then the memcg is deleted but thatacquires a non-irqsafe spinlock in softirq which annoys lockdep. Ithink the lock in question is the mctz below:

mem_cgroup_remove_exceeded(struct mem_cgroup *memcg, struct mem_cgroup_per_zone *mz, struct mem_cgroup_tree_per_zone *mctz) { spin_lock(&mctz->lock); __mem_cgroup_remove_exceeded(memcg, mz, mctz); spin_unlock(&mctz->lock); }Perhaps your patches expose this problem by being the first time we call__mem_cgroup_free() from softirq (this is just an educated guess). I'mnot sure how this would interact with Ying's soft limit rework:https://lwn.net/Articles/501338/