lkml.org 
[lkml]   [2011]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[slubllv7 11/17] slub: Disable interrupts in free_debug processing
    We will be calling free_debug_processing with interrupts disabled
    in some case when the later patches are applied. Some of the
    functions called by free_debug_processing expect interrupts to be
    off.

    Signed-off-by: Christoph Lameter <cl@linux.com>


    ---
    mm/slub.c | 14 ++++++++++----
    1 file changed, 10 insertions(+), 4 deletions(-)

    Index: linux-2.6/mm/slub.c
    ===================================================================
    --- linux-2.6.orig/mm/slub.c 2011-05-31 10:20:05.472975031 -0500
    +++ linux-2.6/mm/slub.c 2011-05-31 10:20:09.792975006 -0500
    @@ -1040,6 +1040,10 @@ bad:
    static noinline int free_debug_processing(struct kmem_cache *s,
    struct page *page, void *object, unsigned long addr)
    {
    + unsigned long flags;
    + int rc = 0;
    +
    + local_irq_save(flags);
    slab_lock(page);

    if (!check_slab(s, page))
    @@ -1056,7 +1060,7 @@ static noinline int free_debug_processin
    }

    if (!check_object(s, page, object, SLUB_RED_ACTIVE))
    - return 0;
    + goto out;

    if (unlikely(s != page->slab)) {
    if (!PageSlab(page)) {
    @@ -1077,13 +1081,15 @@ static noinline int free_debug_processin
    set_track(s, object, TRACK_FREE, addr);
    trace(s, page, object, 0);
    init_object(s, object, SLUB_RED_INACTIVE);
    + rc = 1;
    +out:
    slab_unlock(page);
    - return 1;
    + local_irq_restore(flags);
    + return rc;

    fail:
    slab_fix(s, "Object at 0x%p not freed", object);
    - slab_unlock(page);
    - return 0;
    + goto out;
    }

    static int __init setup_slub_debug(char *str)


    \
     
     \ /
      Last update: 2011-06-01 19:29    [W:4.106 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site