On 20.09.2019 16:21, Kirill A. Shutemov wrote: > On Fri, Sep 20, 2019 at 03:29:07PM +0300, Cyrill Gorcunov wrote: >> Currently there is a small gap between fetching pointer, calling >> kvfree and assign its value to nil. In current callgraph it is >> not a problem (since memcg_free_shrinker_maps is running from >> memcg_alloc_shrinker_maps and mem_cgroup_css_free only) still >> this looks suspicious and we can easily eliminate the gap at all. > > With this logic it will still look suspicious since you don't wait a grace > period before freeing the map. This freeing occurs in the moment, when nobody can dereference shrinker_map in parallel: memcg is either not yet online or its css->refcnt is already dead. This NULLifying is needed just to prevent double freeing of shrinker_map. Please, see the explanation in my email to our namesake. Kirill