• Masami Hiramatsu's avatar
    modules: lockdep: Suppress suspicious RCU usage warning · bf08949c
    Masami Hiramatsu authored
    While running kprobe module test, find_module_all() caused
    a suspicious RCU usage warning.
    
    -----
     =============================
     WARNING: suspicious RCU usage
     5.4.0-next-20191202+ #63 Not tainted
     -----------------------------
     kernel/module.c:619 RCU-list traversed in non-reader section!!
    
     other info that might help us debug this:
    
     rcu_scheduler_active = 2, debug_locks = 1
     1 lock held by rmmod/642:
      #0: ffffffff8227da80 (module_mutex){+.+.}, at: __x64_sys_delete_module+0x9a/0x230
    
     stack backtrace:
     CPU: 0 PID: 642 Comm: rmmod Not tainted 5.4.0-next-20191202+ #63
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
     Call Trace:
      dump_stack+0x71/0xa0
      find_module_all+0xc1/0xd0
      __x64_sys_delete_module+0xac/0x230
      ? do_syscall_64+0x12/0x1f0
      do_syscall_64+0x50/0x1f0
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
     RIP: 0033:0x4b6d49
    -----
    
    This is because list_for_each_entry_rcu(modules) is called
    without rcu_read_lock(). This is safe because the module_mutex
    is locked.
    
    Pass lockdep_is_held(&module_mutex) to the list_for_each_entry_rcu()
    to suppress this warning, This also fixes similar issue in
    mod_find() and each_symbol_section().
    Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: default avatarJessica Yu <jeyu@kernel.org>
    bf08949c
module.c 116 KB