> @@ -738,18 +765,23 @@ static int klp_init_object_loaded(struct klp_patch 
> *patch,
>       int ret;
>  
>       mutex_lock(&text_mutex);
> -
>       module_disable_ro(patch->mod);
> -     ret = klp_write_object_relocations(patch->mod, obj);
> -     if (ret) {
> -             module_enable_ro(patch->mod, true);
> -             mutex_unlock(&text_mutex);
> -             return ret;
> +
> +     if (klp_is_module(obj)) {
> +             /*
> +              * Only write module-specific relocations here
> +              * (.klp.rela.{module}.*).  vmlinux-specific relocations were
> +              * written earlier during the initialization of the klp module
> +              * itself.
> +              */
> +             ret = klp_apply_object_relocs(patch, obj);
> +             if (ret)

+                       module_enable_ro(patch->mod, true);
+                       mutex_unlock(&text_mutex);

is missing here, I think. Probably lost during rebase. It is fine after 
the next patch.

> +                     return ret;
>       }
>  
>       arch_klp_init_object_loaded(patch, obj);
> -     module_enable_ro(patch->mod, true);
>  
> +     module_enable_ro(patch->mod, true);
>       mutex_unlock(&text_mutex);

Miroslav

Reply via email to