lkml.org 
[lkml]   [2013]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[074/126] sched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s
    3.6.11.3 stable review patch.
    If anyone has any objections, please let me know.

    ------------------

    From: Tejun Heo <tj@kernel.org>

    [ Upstream commit 383efcd00053ec40023010ce5034bd702e7ab373 ]

    try_to_wake_up_local() should only be invoked to wake up another
    task in the same runqueue and BUG_ON()s are used to enforce the
    rule. Missing try_to_wake_up_local() can stall workqueue
    execution but such stalls are likely to be finite either by
    another work item being queued or the one blocked getting
    unblocked. There's no reason to trigger BUG while holding rq
    lock crashing the whole system.

    Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20130318192234.GD3042@htj.dyndns.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/sched/core.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/kernel/sched/core.c b/kernel/sched/core.c
    index 1a48cdb..2f88246 100644
    --- a/kernel/sched/core.c
    +++ b/kernel/sched/core.c
    @@ -1651,8 +1651,10 @@ static void try_to_wake_up_local(struct task_struct *p)
    {
    struct rq *rq = task_rq(p);

    - BUG_ON(rq != this_rq());
    - BUG_ON(p == current);
    + if (WARN_ON_ONCE(rq != this_rq()) ||
    + WARN_ON_ONCE(p == current))
    + return;
    +
    lockdep_assert_held(&rq->lock);

    if (!raw_spin_trylock(&p->pi_lock)) {
    --
    1.7.10.4



    \
     
     \ /
      Last update: 2013-05-07 08:02    [W:3.466 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site