lkml.org 
[lkml]   [2007]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [3/3] 2.6.21-rc7: known regressions (v2)

    just found and fixed the bug below in SysRq-T - should be included in
    v2.6.21 i think.

    -------------------------->
    Subject: [patch] make SysRq-T show all tasks again
    From: Ingo Molnar <mingo@elte.hu>

    show_state() (SysRq-T) developed the buggy habbit of not showing
    TASK_RUNNING tasks. This was due to the mistaken belief that
    state_filter == -1 would be a pass-through filter - while in reality it
    did not let TASK_RUNNING == 0 p->state values through.

    (fix this be restoring the original '!state_filter means all tasks'
    special-case i had in the original version. Test-built and test-booted
    on i686, SysRq-T now works as intended.)

    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    include/linux/sched.h | 4 ++--
    kernel/sched.c | 2 +-
    2 files changed, 3 insertions(+), 3 deletions(-)

    Index: linux/include/linux/sched.h
    ===================================================================
    --- linux.orig/include/linux/sched.h
    +++ linux/include/linux/sched.h
    @@ -196,13 +196,13 @@ extern void init_idle(struct task_struct
    extern cpumask_t nohz_cpu_mask;

    /*
    - * Only dump TASK_* tasks. (-1 for all tasks)
    + * Only dump TASK_* tasks. (0 for all tasks)
    */
    extern void show_state_filter(unsigned long state_filter);

    static inline void show_state(void)
    {
    - show_state_filter(-1);
    + show_state_filter(0);
    }

    extern void show_regs(struct pt_regs *);
    Index: linux/kernel/sched.c
    ===================================================================
    --- linux.orig/kernel/sched.c
    +++ linux/kernel/sched.c
    @@ -4746,7 +4746,7 @@ void show_state_filter(unsigned long sta
    * console might take alot of time:
    */
    touch_nmi_watchdog();
    - if (p->state & state_filter)
    + if (!state_filter || (p->state & state_filter))
    show_task(p);
    } while_each_thread(g, p);

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-04-25 20:01    [W:0.025 / U:30.296 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site