lkml.org 
[lkml]   [2008]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] Fix max-stack calculators to skip canary
    With the canary on the end of the stack, anything which
    looks for 0 to mean unused when calculating max stack
    excursions must skip over this non-zero magic number.

    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    ---

    Index: linux-2.6.25/kernel/exit.c
    ===================================================================
    --- linux-2.6.25.orig/kernel/exit.c 2008-04-20 22:34:16.000000000 -0500
    +++ linux-2.6.25/kernel/exit.c 2008-04-22 11:38:05.769412824 -0500
    @@ -826,6 +826,8 @@ static void check_stack_usage(void)
    unsigned long *n = end_of_stack(current);
    unsigned long free;

    + n++; /* skip over canary at end */
    +
    while (*n == 0)
    n++;
    free = (unsigned long)n - (unsigned long)end_of_stack(current);
    Index: linux-2.6.25/kernel/sched.c
    ===================================================================
    --- linux-2.6.25.orig/kernel/sched.c 2008-04-20 22:34:19.000000000 -0500
    +++ linux-2.6.25/kernel/sched.c 2008-04-22 11:48:06.975407495 -0500
    @@ -5190,6 +5190,8 @@ void sched_show_task(struct task_struct
    #ifdef CONFIG_DEBUG_STACK_USAGE
    {
    unsigned long *n = end_of_stack(p);
    +
    + n++; /* skip over canary at end */
    while (!*n)
    n++;
    free = (unsigned long)n - (unsigned long)end_of_stack(p);


    \
     
     \ /
      Last update: 2008-04-22 19:21    [W:0.022 / U:0.052 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site