/kernel/livepatch/ |
D | core.c | 101 static struct klp_object *klp_find_object(struct klp_patch *patch, in klp_find_object() argument 106 klp_for_each_object(patch, obj) { in klp_find_object() 330 static int __klp_disable_patch(struct klp_patch *patch); 335 struct klp_patch *patch; in enabled_store() local 343 patch = container_of(kobj, struct klp_patch, kobj); in enabled_store() 347 if (patch->enabled == enabled) { in enabled_store() 360 if (patch == klp_transition_patch) in enabled_store() 363 ret = __klp_disable_patch(patch); in enabled_store() 378 struct klp_patch *patch; in enabled_show() local 380 patch = container_of(kobj, struct klp_patch, kobj); in enabled_show() [all …]
|
D | state.c | 15 #define klp_for_each_state(patch, state) \ argument 16 for (state = patch->states; state && state->id; state++) 31 struct klp_state *klp_get_state(struct klp_patch *patch, unsigned long id) in klp_get_state() argument 35 klp_for_each_state(patch, state) { in klp_get_state() 66 struct klp_patch *patch; in klp_get_prev_state() local 72 klp_for_each_patch(patch) { in klp_get_prev_state() 73 if (patch == klp_transition_patch) in klp_get_prev_state() 76 state = klp_get_state(patch, id); in klp_get_prev_state() 87 static bool klp_is_state_compatible(struct klp_patch *patch, in klp_is_state_compatible() argument 92 state = klp_get_state(patch, old_state->id); in klp_is_state_compatible() [all …]
|
D | transition.c | 391 struct klp_patch *patch; in klp_try_complete_transition() local 444 patch = klp_transition_patch; in klp_try_complete_transition() 452 if (!patch->enabled) in klp_try_complete_transition() 453 klp_free_patch_async(patch); in klp_try_complete_transition() 454 else if (patch->replace) in klp_try_complete_transition() 455 klp_free_replaced_patches_async(patch); in klp_try_complete_transition() 503 void klp_init_transition(struct klp_patch *patch, int state) in klp_init_transition() argument 513 klp_transition_patch = patch; in klp_init_transition() 521 pr_debug("'%s': initializing %s transition\n", patch->mod->name, in klp_init_transition() 566 klp_for_each_object(patch, obj) in klp_init_transition() [all …]
|
D | core.h | 10 #define klp_for_each_patch_safe(patch, tmp_patch) \ argument 11 list_for_each_entry_safe(patch, tmp_patch, &klp_patches, list) 13 #define klp_for_each_patch(patch) \ argument 14 list_for_each_entry(patch, &klp_patches, list) 16 void klp_free_patch_async(struct klp_patch *patch);
|
D | patch.c | 287 static void __klp_unpatch_objects(struct klp_patch *patch, bool nops_only) in __klp_unpatch_objects() argument 291 klp_for_each_object(patch, obj) in __klp_unpatch_objects() 296 void klp_unpatch_objects(struct klp_patch *patch) in klp_unpatch_objects() argument 298 __klp_unpatch_objects(patch, false); in klp_unpatch_objects() 301 void klp_unpatch_objects_dynamic(struct klp_patch *patch) in klp_unpatch_objects_dynamic() argument 303 __klp_unpatch_objects(patch, true); in klp_unpatch_objects_dynamic()
|
D | Kconfig | 17 This option has no runtime impact until a kernel "patch" 19 a patch, causing calls to patched functions to be redirected 20 to new function code contained in the patch module.
|
D | patch.h | 32 void klp_unpatch_objects(struct klp_patch *patch); 33 void klp_unpatch_objects_dynamic(struct klp_patch *patch);
|
D | state.h | 7 bool klp_is_patch_compatible(struct klp_patch *patch);
|
D | transition.h | 9 void klp_init_transition(struct klp_patch *patch, int state);
|
D | Makefile | 4 livepatch-objs := core.o patch.o shadow.o state.o transition.o
|
/kernel/bpf/ |
D | core.c | 445 const struct bpf_insn *patch, u32 len) in bpf_patch_insn_single() argument 454 memcpy(prog->insnsi + off, patch, sizeof(*patch)); in bpf_patch_insn_single() 491 sizeof(*patch) * insn_rest); in bpf_patch_insn_single() 492 memcpy(prog_adj->insnsi + off, patch, sizeof(*patch) * len); in bpf_patch_insn_single()
|
D | verifier.c | 12012 const struct bpf_insn *patch, u32 len) in bpf_patch_insn_data() argument 12024 new_prog = bpf_patch_insn_single(env->prog, off, patch, len); in bpf_patch_insn_data() 12301 struct bpf_insn *patch, zext_patch[2], rnd_hi32_patch[4]; in opt_subreg_zext_lo32_rnd_hi32() local 12352 patch = rnd_hi32_patch; in opt_subreg_zext_lo32_rnd_hi32() 12382 patch = zext_patch; in opt_subreg_zext_lo32_rnd_hi32() 12385 new_prog = bpf_patch_insn_data(env, adj_idx, patch, patch_len); in opt_subreg_zext_lo32_rnd_hi32() 12464 struct bpf_insn patch[] = { in convert_ctx_accesses() local 12469 cnt = ARRAY_SIZE(patch); in convert_ctx_accesses() 12470 new_prog = bpf_patch_insn_data(env, i + delta, patch, cnt); in convert_ctx_accesses() 12973 struct bpf_insn *patch = &insn_buf[0]; in do_misc_fixups() local [all …]
|
/kernel/trace/ |
D | Kconfig | 195 dynamically (will patch them out of the binary image and
|