On Thu, Oct 19, 2017 at 3:31 AM, Sergey Senozhatsky <sergey.senozhatsky.w...@gmail.com> wrote: > On (10/19/17 03:03), Jason A. Donenfeld wrote: > [..] >> 1) Go back to the spinlock yourself. > > so we ruled out NMI deadlocks?
Oh, right. No, I haven't thought through this enough to rule it out. Indeed if that's an issue, the locks in the _once code will also be an issue. So if locking is totally impossible, then a race-free way of doing this is with a tri-state compare and exchange. Things are either: in state 1: no key, state 2: getting key, state 3: have key. If state 1 or 2, print the placeholder token. If state 3, do the hashing.