The title is pretty much the question...
I am writing some code that uses a spinlock to help in list management. The documentation on spinlocks are pretty clear about not making a call to anything that would sleep. I know there are ways to allocate memory that are "atomic", but I haven't seen anything about kfree or freeing the memory.
Intuition tells me it shouldn't ever sleep, but I haven't found were that is explicit.
No, it never sleeps. It's safe to call kfree from arbitrary context. The only exception is the NMI oopser and similar arch code.