Signed-off-by: Jan Kara <jack@xxxxxxx> --- kernel/printk/printk.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index a39f4129f848..00a9ad5c2708 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1718,17 +1718,19 @@ asmlinkage int vprintk_emit(int facility, int level, logbuf_cpu = UINT_MAX; raw_spin_unlock(&logbuf_lock); - local_irq_restore(flags); - - /* If called from the scheduler, we can not call up(). */ - if (in_sched) - return printed_len; - /* * Disable preemption to avoid being preempted while holding * console_sem which would prevent anyone from printing to console */ preempt_disable(); + local_irq_restore(flags); + + /* If called from the scheduler, we can not call up(). */ + if (in_sched) { + preempt_enable(); + return printed_len; + } + /* * Try to acquire and then immediately release the console semaphore. * The release will print out buffers and wake up /dev/kmsg and syslog() -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html