The patch->mod is not a protected object of mutex_lock(&klp_mutex). Since it's in the error handling branch, it might not be helpful to reduce lock conflicts, but it can reduce some code size. Before: text data bss dec hex filename 10330 464 8 10802 2a32 kernel/livepatch/core.o After: text data bss dec hex filename 10307 464 8 10779 2a1b kernel/livepatch/core.o Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx> --- kernel/livepatch/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 42f7e716d56bf72..cb7abc821a50584 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -1041,9 +1041,9 @@ int klp_enable_patch(struct klp_patch *patch) mutex_lock(&klp_mutex); if (!klp_is_patch_compatible(patch)) { + mutex_unlock(&klp_mutex); pr_err("Livepatch patch (%s) is not compatible with the already installed livepatches.\n", patch->mod->name); - mutex_unlock(&klp_mutex); return -EINVAL; } -- 2.25.1