Skip to content
  • Trent Piepho's avatar
    [PATCH] symbol_put_addr() locks kernel · 5e376613
    Trent Piepho authored
    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() would acquire modlist_lock, then while holding the lock call
    two functions kernel_text_address() and module_text_address() which also try
    to acquire the same lock.  This deadlocks the kernel of course.
    
    This patch changes symbol_put_addr() to not acquire the modlist_lock, it
    doesn't need it since it never looks at the module list directly.  Also, it
    now uses core_kernel_text() instead of kernel_text_address().  The latter has
    an additional check for addr inside a module, but we don't need to do that
    since we call module_text_address() (the same function kernel_text_address
    uses) ourselves.
    
    Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
    Cc:...
    5e376613