• R
    sched: Make wakeup side and atomic variants of completion API irq safe · 7539a3b3
    Rafael J. Wysocki 提交于
    Alan Stern noticed that all the wakeup side (and atomic) variants of the
    completion APIs should be irq safe, but the newly introduced
    completion_done() and try_wait_for_completion() aren't. The use of the
    irq unsafe variants in IRQ contexts can cause crashes/hangs.
    
    Fix the problem by making them use spin_lock_irqsave() and
    spin_lock_irqrestore().
    Reported-by: NAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: pm list <linux-pm@lists.linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: David Chinner <david@fromorbit.com>
    Cc: Lachlan McIlroy <lachlan@sgi.com>
    LKML-Reference: <200912130007.30541.rjw@sisk.pl>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    7539a3b3
sched.c 269.0 KB