aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/livepatch/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/livepatch/core.c')
-rw-r--r--kernel/livepatch/core.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index 4b7f55d9e89c..d1af69e9f0e3 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -1141,21 +1141,14 @@ static void klp_cleanup_module_patches_limited(struct module *mod,
1141 if (!klp_is_module(obj) || strcmp(obj->name, mod->name)) 1141 if (!klp_is_module(obj) || strcmp(obj->name, mod->name))
1142 continue; 1142 continue;
1143 1143
1144 /* 1144 if (patch != klp_transition_patch)
1145 * Only unpatch the module if the patch is enabled or 1145 klp_pre_unpatch_callback(obj);
1146 * is in transition.
1147 */
1148 if (patch->enabled || patch == klp_transition_patch) {
1149
1150 if (patch != klp_transition_patch)
1151 klp_pre_unpatch_callback(obj);
1152 1146
1153 pr_notice("reverting patch '%s' on unloading module '%s'\n", 1147 pr_notice("reverting patch '%s' on unloading module '%s'\n",
1154 patch->mod->name, obj->mod->name); 1148 patch->mod->name, obj->mod->name);
1155 klp_unpatch_object(obj); 1149 klp_unpatch_object(obj);
1156 1150
1157 klp_post_unpatch_callback(obj); 1151 klp_post_unpatch_callback(obj);
1158 }
1159 1152
1160 klp_free_object_loaded(obj); 1153 klp_free_object_loaded(obj);
1161 break; 1154 break;
@@ -1194,13 +1187,6 @@ int klp_module_coming(struct module *mod)
1194 goto err; 1187 goto err;
1195 } 1188 }
1196 1189
1197 /*
1198 * Only patch the module if the patch is enabled or is
1199 * in transition.
1200 */
1201 if (!patch->enabled && patch != klp_transition_patch)
1202 break;
1203
1204 pr_notice("applying patch '%s' to loading module '%s'\n", 1190 pr_notice("applying patch '%s' to loading module '%s'\n",
1205 patch->mod->name, obj->mod->name); 1191 patch->mod->name, obj->mod->name);
1206 1192