• Jan Kara's avatar
    printk: release lockbuf_lock before calling console_trylock_for_printk() · 608873ca
    Jan Kara authored
    There's no reason to hold lockbuf_lock when entering
    console_trylock_for_printk().
    
    The first thing this function does is to call down_trylock(console_sem)
    and if that fails it immediately unlocks lockbuf_lock.  So lockbuf_lock
    isn't needed for that branch.  When down_trylock() succeeds, the rest of
    console_trylock() is OK without lockbuf_lock (it is called without it
    from other places), and the only remaining thing in
    console_trylock_for_printk() is can_use_console() call.  For that call
    console_sem is enough (it iterates all consoles and checks CON_ANYTIME
    flag).
    
    So we drop logbuf_lock before entering console_trylock_for_printk() which
    simplifies the code.
    
    [akpm@linux-foundation.org: fix have_callable_console() comment]
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    608873ca
printk.c 74.1 KB