Hi,

On (03/14/16 11:30), Byungchul Park wrote:
[..]
> > so can it be
> > 
> > vprintk_emit()
> >  __spin_dump_deferred()
> >   vprintk_deferred()
> >    vprintk_emit()
> >     __spin_dump_deferred()
>       ^^^
>       can be caused by raw_spin_lock(logbug_lock)
> 
> >      vprintk_deferred()
> 
> Yes, it can happen by raw_spin_lock(logbuf_lock) to print warning or error
> message. Are you worrying about an infinite recursion?

yes.

> 1. In the case printing warning, eventually it can fill the buffer without
> actual printing using console.

so the worry is that the CPU that spins on __spin_dump_deferred() has IRQs
disabled and `printk_pending' bit set; but IRQ may never be enabled on this
CPU.

> 2. In the case printing error, the infinite recursion can be prevented by
> debug_locks_off().
> 
> Therefore, no problem.

        -ss

Reply via email to