• Linus Torvalds's avatar
    [BKL] add 'might_sleep()' to the outermost lock taker · f01eb364
    Linus Torvalds authored
    As shown by the previous patch (6698e347: "tty: Fix BKL taken under a
    spinlock bug introduced in the BKL split") the BKL removal is prone to
    some subtle issues, where removing the BKL in one place may in fact make
    a previously nested BKL call the new outer call, and then prone to nasty
    deadlocks with other spinlocks.
    
    In general, we should never take the BKL while we're holding a spinlock,
    so let's just add a "might_sleep()" to it (even though the BKL doesn't
    technically sleep - at least not yet), and we'll get nice warnings the
    next time this kind of problem happens during BKL removal.
    Acked-and-Tested-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f01eb364
kernel_lock.c 3.17 KB