v1
2026-10-01
memcg 清理保留 nolock 上下文 · v1
SLUB no-lock 路径在 memcg 充能失败时改用 kfree_nolock,并将 objcg 最终释放推迟到 irq_work 完成。
原始补丁链接
子 Patch(2)
1/2
mm/slub: preserve no-lock freeing after memcg charge failure
kmalloc_nolock() can obtain an object before its memcg post-allocation charge fails. For a single object, memcg_slab_post_alloc_hook() rolls the allocation back through memcg_alloc_abort_single(). T
2/2
mm/memcontrol: defer final objcg release from no-lock frees
kfree_nolock() and free_pages_nolock() can drop the last reference to a killed object cgroup. percpu_ref then invokes obj_cgroup_release() in the caller’s context. The callback can uncharge pages.