• Glauber Costa's avatar
    slub: drop mutex before deleting sysfs entry · 5413dfba
    Glauber Costa authored
    Sasha Levin recently reported a lockdep problem resulting from the new
    attribute propagation introduced by kmemcg series.  In short, slab_mutex
    will be called from within the sysfs attribute store function.  This will
    create a dependency, that will later be held backwards when a cache is
    destroyed - since destruction occurs with the slab_mutex held, and then
    calls in to the sysfs directory removal function.
    
    In this patch, I propose to adopt a strategy close to what
    __kmem_cache_create does before calling sysfs_slab_add, and release the
    lock before the call to sysfs_slab_remove.  This is pretty much the last
    operation in the kmem_cache_shutdown() path, so we could do better by
    splitting this and moving this call alone to later on.  This will fit
    nicely when sysfs handling is consistent between all caches, but will look
    weird now.
    
    Lockdep info:
    
      ======================================================
      [ INFO: possible circular locking dependency detected ]
      ...
    5413dfba
slub.c 129 KB