lkml.org 
[lkml]   [2014]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] sched: BUG when stack end location is over written
    Date
    Currently in the event of a stack overrun a call to schedule()
    does not check for this type of corruption. This corruption is
    often silent and can go unnoticed. However once the corrupted
    region is examined at a later stage, the outcome is undefined
    and often results in a sporadic page fault which cannot be
    handled.

    This patch checks for a stack overrun and takes appropriate
    action since the damage is already done, there is no point
    in continuing.

    Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
    ---
    kernel/sched/core.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/kernel/sched/core.c b/kernel/sched/core.c
    index ec1a286..d6af6a0 100644
    --- a/kernel/sched/core.c
    +++ b/kernel/sched/core.c
    @@ -2660,6 +2660,9 @@ static noinline void __schedule_bug(struct task_struct *prev)
    */
    static inline void schedule_debug(struct task_struct *prev)
    {
    + if (unlikely(prev != &init_task &&
    + task_stack_end_corrupted(prev)))
    + BUG();
    /*
    * Test if we are atomic. Since do_exit() needs to call into
    * schedule() atomically, we ignore that path. Otherwise whine
    --
    1.9.3


    \
     
     \ /
      Last update: 2014-09-04 17:21    [W:2.253 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site