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:
Родитель
56926f913b
Коммит
62582f67ff
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче