On Wed, Jun 01, 2022 at 04:37:17PM -0700, Tadeusz Struk wrote: > Yes, but as far as I can see the percpu_ref_kill_and_confirm(&css->refcnt, css_killed_ref_fn) > doesn't change the value of the refcnt, it just causes the css_killed_ref_fn() to be called Yeah, the base ref is special for percpu_ref. > on it. Only css_get() & css_put() modify the refcnt value. > And for the "free the thing" the css_killed_work_fn() does that. > It calls offline_css(css) and css_put(css) for the whole css hierarchy. Yeah, the freeing path depends on the css_put(css) invoking css_release() which schedules the work item which actually frees. Am I misunderstanding something here? Thanks. -- tejun