Please CC me on any replies, I'm not subscribed. Even since a previous patch: Fix race between CONFIG_DEBUG_SLABALLOC and modules Sun, 27 Jun 2004 17:55:19 +0000 (17:55 +0000) http://www.kernel.org/git/?p=linux/kernel/git/torvalds/old-2.6-bkcvs.git;a=commit;h=92b3db26d31cf21b70e3c1eadc56c179506d8fbe The function symbol_put_addr() will deadlock the kernel. symbol_put_addr() acquires the modlist_lock spinlock, then calls kernel_text_address() and module_text_address() while it still holds the lock. That patch changed those two functions so they also try to acquire the spinlock, which of course locks the kernel. If you look at the original thread: http://lkml.org/lkml/2004/6/23/20 The first patch corrected symbol_put_addr() to use the new "double-underscore" functions that don't try to acquire the lock, but the final patch missed symbol_put_addr(). Here is a patch which fixes this. The locking inside symbol_put_addr() is removed. I changed symbol_put_addr() to call core_kernel_text() instead of kernel_text_address(), the latter includes an additional check if the addr is inside a module. Since we will call module_text_address() to get the module, this extra check isn't needed.