lkml.org 
[lkml]   [2020]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v6 04/17] jump_label,module: Fix module lifetime for __jump_label_mod_text_reserved
    Nothing ensures the module exists while we're iterating
    mod->jump_entries in __jump_label_mod_text_reserved(), take a module
    reference to ensure the module sticks around.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    ---
    kernel/jump_label.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    --- a/kernel/jump_label.c
    +++ b/kernel/jump_label.c
    @@ -539,19 +539,25 @@ static void static_key_set_mod(struct st
    static int __jump_label_mod_text_reserved(void *start, void *end)
    {
    struct module *mod;
    + int ret;

    preempt_disable();
    mod = __module_text_address((unsigned long)start);
    WARN_ON_ONCE(__module_text_address((unsigned long)end) != mod);
    + if (!try_module_get(mod))
    + mod = NULL;
    preempt_enable();

    if (!mod)
    return 0;

    -
    - return __jump_label_text_reserved(mod->jump_entries,
    + ret = __jump_label_text_reserved(mod->jump_entries,
    mod->jump_entries + mod->num_jump_entries,
    start, end);
    +
    + module_put(mod);
    +
    + return ret;
    }

    static void __jump_label_mod_update(struct static_key *key)

    \
     
     \ /
      Last update: 2020-07-10 15:45    [W:4.148 / U:0.280 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site