I've just been told that it's not OK to call printk while holding a lock. This came as a surprise to me, as I've written thousands of lines of code that calls printk while holding multiple locks, and have not seen any problem. The only explanation I was given was that it can deadlock.