diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 4cbe7ebfcf7fb184856c2a21fcece74a73975107..2c4aed29a2987c123bfca2bc4417d17067b91282 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -1207,14 +1207,12 @@ static int klp_init_patch(struct klp_patch *patch) mutex_lock(&text_mutex); module_disable_ro(patch->mod); jump_label_apply_nops(patch->mod); + module_enable_ro(patch->mod, true); + mutex_unlock(&text_mutex); ret = jump_label_register(patch->mod); if (ret) { - module_enable_ro(patch->mod, true); - mutex_unlock(&text_mutex); goto free; } - module_enable_ro(patch->mod, true); - mutex_unlock(&text_mutex); #ifdef CONFIG_LIVEPATCH_WO_FTRACE klp_for_each_object(patch, obj)