Revert "printk: Never set console_may_schedule in console_trylock()"

This reverts commit c9b8d580b3.

This is just a technical revert to make the printk fix apply cleanly,
this patch will be re-picked in about 3 commits.
This commit is contained in:
Sasha Levin 2018-12-13 09:24:35 -05:00 коммит произвёл Greg Kroah-Hartman
Родитель 56926f913b
Коммит 62582f67ff
1 изменённых файлов: 14 добавлений и 8 удалений

Просмотреть файл

@ -1762,12 +1762,6 @@ asmlinkage int vprintk_emit(int facility, int level,
/* If called from the scheduler, we can not call up(). */
if (!in_sched) {
/*
* Disable preemption to avoid being preempted while holding
* console_sem which would prevent anyone from printing to
* console
*/
preempt_disable();
/*
* Try to acquire and then immediately release the console
* semaphore. The release will print out buffers and wake up
@ -1775,7 +1769,6 @@ asmlinkage int vprintk_emit(int facility, int level,
*/
if (console_trylock())
console_unlock();
preempt_enable();
}
return printed_len;
@ -2090,7 +2083,20 @@ int console_trylock(void)
return 0;
}
console_locked = 1;
console_may_schedule = 0;
/*
* When PREEMPT_COUNT disabled we can't reliably detect if it's
* safe to schedule (e.g. calling printk while holding a spin_lock),
* because preempt_disable()/preempt_enable() are just barriers there
* and preempt_count() is always 0.
*
* RCU read sections have a separate preemption counter when
* PREEMPT_RCU enabled thus we must take extra care and check
* rcu_preempt_depth(), otherwise RCU read sections modify
* preempt_count().
*/
console_may_schedule = !oops_in_progress &&
preemptible() &&
!rcu_preempt_depth();
return 1;
}
EXPORT_SYMBOL(console_trylock);