Just a question: can kfree sleep?No, it never sleeps. It's safe to call kfree from arbitrary context. The only exception is the NMI oopser and similar arch code.
I believe so, but slab.c does not enlighten me immediately:Yes, the kfree code is quite long - it must check if freeing one object created a freeable page and return it to the page allocator. Together with lots of caching and debug checks.