• Eric Sandeen's avatar
    ext4: make grpinfo slab cache names static · 2be2f98b
    Eric Sandeen authored
    commit 2892c15d upstream.
    
    In 2.6.37 I was running into oopses with repeated module
    loads & unloads.  I tracked this down to:
    
    fb1813f4 ext4: use dedicated slab caches for group_info structures
    
    (this was in addition to the features advert unload problem)
    
    The kstrdup & subsequent kfree of the cache name was causing
    a double free.  In slub, at least, if I read it right it allocates
    & frees the name itself, slab seems to do something different...
    so in slub I think we were leaking -our- cachep->name, and double
    freeing the one allocated by slub.
    
    After getting lost in slab/slub/slob a bit, I just looked at other
    sized-caches that get allocated.  jbd2, biovec, sgpool all do it
    more or less the way jbd2 does.  Below patch follows the jbd2
    method of dynamically allocating a cache at mount time from
    a list of static names.
    
    (This might also possibly fix a race creating the caches with
    parallel mounts running).
    
    [Folded in a fix from Dan Carpenter which fixed an off-by-one error in
    the original patch]
    Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    2be2f98b
mballoc.c 132 KB