Messages in this thread | | | Date | Thu, 6 Jul 2017 09:53:28 +0900 | From | Sergey Senozhatsky <> | Subject | Re: [GIT PULL] printk for 4.13 |
| |
On (07/06/17 09:44), Sergey Senozhatsky wrote: > > No, this is entirely buggered. > > > > You can't just do > > > > raw_spin_is_locked(&logbuf_lock) > > > > to test whether you can get the logbuf_lock and then call vprintk_default(). > > > > It's not just about deadlock avoidance, the code will call things like > > down_trylock() on the console semaphore, and that operation is > > fundamentally not NMI-safe. The semaphore count is literally protected > > by a irq-safe (BUT NOT NMI-SAFE!) semaphore spinlock. > > > > So now you can instead deadlock just on the internal console semaphore > > spinlock (ie somebody is doing "console_lock()", NMI comes in, *BOOM*. > > you are right. but >
just in case if my previous email was too hard to follow, may be the link below will explain it in a less broken language. (I'm sorry, I'm on medication now and didn't have enough coffee yet.)
https://marc.info/?l=linux-kernel&m=149265908228203&w=2
-ss
| |