[lkml]   [2012]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[ 129/149] slub: Do not hold slub_lock when calling sysfs_slab_add()
    3.2-stable review patch.  If anyone has any objections, please let me know.


    From: Christoph Lameter <>

    commit 66c4c35c6bc5a1a452b024cf0364635b28fd94e4 upstream.

    sysfs_slab_add() calls various sysfs functions that actually may
    end up in userspace doing all sorts of things.

    Release the slub_lock after adding the kmem_cache structure to the list.
    At that point the address of the kmem_cache is not known so we are
    guaranteed exlusive access to the following modifications to the
    kmem_cache structure.

    If the sysfs_slab_add fails then reacquire the slub_lock to
    remove the kmem_cache structure from the list.

    Reported-by: Sasha Levin <>
    Acked-by: Eric Dumazet <>
    Signed-off-by: Christoph Lameter <>
    Signed-off-by: Pekka Enberg <>
    Signed-off-by: Greg Kroah-Hartman <>

    mm/slub.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/mm/slub.c
    +++ b/mm/slub.c
    @@ -3911,13 +3911,14 @@ struct kmem_cache *kmem_cache_create(con
    if (kmem_cache_open(s, n,
    size, align, flags, ctor)) {
    list_add(&s->list, &slab_caches);
    + up_write(&slub_lock);
    if (sysfs_slab_add(s)) {
    + down_write(&slub_lock);
    goto err;
    - up_write(&slub_lock);
    return s;

     \ /
      Last update: 2012-03-31 00:11    [W:0.020 / U:21.000 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site