• Rafael J. Wysocki's avatar
    sched: Make wakeup side and atomic variants of completion API irq safe · 7539a3b3
    Rafael J. Wysocki authored
    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: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarRafael 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: default avatarIngo Molnar <mingo@elte.hu>
    7539a3b3
sched.c 269 KB