/kernel/linux/linux-6.6/kernel/livepatch/ |
H A D | core.c | 25 #include "patch.h" 71 * Note that the patch might still be needed before klp_module_going() in klp_find_object_module() 102 static struct klp_object *klp_find_object(struct klp_patch *patch, in klp_find_object() argument 107 klp_for_each_object(patch, obj) { in klp_find_object() 345 * /sys/kernel/livepatch/<patch> 346 * /sys/kernel/livepatch/<patch>/enabled 347 * /sys/kernel/livepatch/<patch>/transition 348 * /sys/kernel/livepatch/<patch>/force 349 * /sys/kernel/livepatch/<patch>/<object> 350 * /sys/kernel/livepatch/<patch>/<objec 358 struct klp_patch *patch; enabled_store() local 401 struct klp_patch *patch; enabled_show() local 410 struct klp_patch *patch; transition_show() local 420 struct klp_patch *patch; force_store() local 484 klp_alloc_object_dynamic(const char *name, struct klp_patch *patch) klp_alloc_object_dynamic() argument 541 klp_add_object_nops(struct klp_patch *patch, struct klp_object *old_obj) klp_add_object_nops() argument 573 klp_add_nops(struct klp_patch *patch) klp_add_nops() argument 593 struct klp_patch *patch; klp_kobj_release_patch() local 664 __klp_free_objects(struct klp_patch *patch, bool nops_only) __klp_free_objects() argument 679 klp_free_objects(struct klp_patch *patch) klp_free_objects() argument 684 klp_free_objects_dynamic(struct klp_patch *patch) klp_free_objects_dynamic() argument 696 klp_free_patch_start(struct klp_patch *patch) klp_free_patch_start() argument 712 klp_free_patch_finish(struct klp_patch *patch) klp_free_patch_finish() argument 735 struct klp_patch *patch = klp_free_patch_work_fn() local 741 klp_free_patch_async(struct klp_patch *patch) klp_free_patch_async() argument 787 klp_write_object_relocs(struct klp_patch *patch, struct klp_object *obj, bool apply) klp_write_object_relocs() argument 811 klp_apply_object_relocs(struct klp_patch *patch, struct klp_object *obj) klp_apply_object_relocs() argument 817 klp_clear_object_relocs(struct klp_patch *patch, struct klp_object *obj) klp_clear_object_relocs() argument 824 klp_init_object_loaded(struct klp_patch *patch, struct klp_object *obj) klp_init_object_loaded() argument 872 klp_init_object(struct klp_patch *patch, struct klp_object *obj) klp_init_object() argument 910 klp_init_object_early(struct klp_patch *patch, struct klp_object *obj) klp_init_object_early() argument 918 klp_init_patch_early(struct klp_patch *patch) klp_init_patch_early() argument 940 klp_init_patch(struct klp_patch *patch) klp_init_patch() argument 966 __klp_disable_patch(struct klp_patch *patch) __klp_disable_patch() argument 998 __klp_enable_patch(struct klp_patch *patch) __klp_enable_patch() argument 1066 klp_enable_patch(struct klp_patch *patch) klp_enable_patch() argument 1191 struct klp_patch *patch; klp_cleanup_module_patches_limited() local 1220 struct klp_patch *patch; klp_module_coming() local [all...] |
H A D | state.c | 15 #define klp_for_each_state(patch, state) \ 16 for (state = patch->states; state && state->id; state++) 20 * the given patch 21 * @patch: livepatch that modifies the given system state 24 * Checks whether the given patch modifies the given system state. 26 * The function can be called either from pre/post (un)patch 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() 58 * It is typically called only from pre/post (un)patch 66 struct klp_patch *patch; in klp_get_prev_state() local 87 klp_is_state_compatible(struct klp_patch *patch, struct klp_state *old_state) klp_is_state_compatible() argument 106 klp_is_patch_compatible(struct klp_patch *patch) klp_is_patch_compatible() argument [all...] |
H A D | transition.c | 14 #include "patch.h" 74 * We allow to patch also functions where RCU is not watching, 87 * The transition to the target patch state is complete. Clean up the data 115 * from this patch on the ops->func_stack. Otherwise, after in klp_complete_transition() 179 * patch state. 260 * Determine whether it's safe to transition the task to the target patch state 310 * Try to safely switch a task to the target patch state. If it's currently 332 * functions. If all goes well, switch the task to the target patch in klp_try_switch_task() 444 * Try to switch all remaining tasks to the target patch state by walking the 449 * If any tasks are still stuck in the initial patch stat 455 struct klp_patch *patch; klp_try_complete_transition() local 573 klp_init_transition(struct klp_patch *patch, int state) klp_init_transition() argument 729 struct klp_patch *patch; klp_force_transition() local [all...] |
/kernel/linux/linux-5.10/kernel/livepatch/ |
H A D | core.c | 24 #include "patch.h" 69 * Note that the patch might still be needed before klp_module_going() in klp_find_object_module() 100 static struct klp_object *klp_find_object(struct klp_patch *patch, in klp_find_object() argument 105 klp_for_each_object(patch, obj) { in klp_find_object() 328 * /sys/kernel/livepatch/<patch> 329 * /sys/kernel/livepatch/<patch>/enabled 330 * /sys/kernel/livepatch/<patch>/transition 331 * /sys/kernel/livepatch/<patch>/force 332 * /sys/kernel/livepatch/<patch>/<object> 333 * /sys/kernel/livepatch/<patch>/<objec 340 struct klp_patch *patch; enabled_store() local 383 struct klp_patch *patch; enabled_show() local 392 struct klp_patch *patch; transition_show() local 402 struct klp_patch *patch; force_store() local 450 klp_alloc_object_dynamic(const char *name, struct klp_patch *patch) klp_alloc_object_dynamic() argument 507 klp_add_object_nops(struct klp_patch *patch, struct klp_object *old_obj) klp_add_object_nops() argument 539 klp_add_nops(struct klp_patch *patch) klp_add_nops() argument 559 struct klp_patch *patch; klp_kobj_release_patch() local 629 __klp_free_objects(struct klp_patch *patch, bool nops_only) __klp_free_objects() argument 644 klp_free_objects(struct klp_patch *patch) klp_free_objects() argument 649 klp_free_objects_dynamic(struct klp_patch *patch) klp_free_objects_dynamic() argument 661 klp_free_patch_start(struct klp_patch *patch) klp_free_patch_start() argument 677 klp_free_patch_finish(struct klp_patch *patch) klp_free_patch_finish() argument 700 struct klp_patch *patch = klp_free_patch_work_fn() local 706 klp_free_patch_async(struct klp_patch *patch) klp_free_patch_async() argument 752 klp_apply_object_relocs(struct klp_patch *patch, struct klp_object *obj) klp_apply_object_relocs() argument 776 klp_init_object_loaded(struct klp_patch *patch, struct klp_object *obj) klp_init_object_loaded() argument 824 klp_init_object(struct klp_patch *patch, struct klp_object *obj) klp_init_object() argument 862 klp_init_object_early(struct klp_patch *patch, struct klp_object *obj) klp_init_object_early() argument 870 klp_init_patch_early(struct klp_patch *patch) klp_init_patch_early() argument 903 klp_init_patch(struct klp_patch *patch) klp_init_patch() argument 929 __klp_disable_patch(struct klp_patch *patch) __klp_disable_patch() argument 961 __klp_enable_patch(struct klp_patch *patch) __klp_enable_patch() argument 1029 klp_enable_patch(struct klp_patch *patch) klp_enable_patch() argument 1146 struct klp_patch *patch; klp_cleanup_module_patches_limited() local 1175 struct klp_patch *patch; klp_module_coming() local [all...] |
H A D | state.c | 15 #define klp_for_each_state(patch, state) \ 16 for (state = patch->states; state && state->id; state++) 20 * the given patch 21 * @patch: livepatch that modifies the given system state 24 * Checks whether the given patch modifies the given system state. 26 * The function can be called either from pre/post (un)patch 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() 58 * It is typically called only from pre/post (un)patch 66 struct klp_patch *patch; in klp_get_prev_state() local 87 klp_is_state_compatible(struct klp_patch *patch, struct klp_state *old_state) klp_is_state_compatible() argument 106 klp_is_patch_compatible(struct klp_patch *patch) klp_is_patch_compatible() argument [all...] |
H A D | transition.c | 13 #include "patch.h" 53 * We allow to patch also functions where RCU is not watching, 66 * The transition to the target patch state is complete. Clean up the data 94 * from this patch on the ops->func_stack. Otherwise, after in klp_complete_transition() 158 * patch state. 239 * Determine whether it's safe to transition the task to the target patch state 277 * Try to safely switch a task to the target patch state. If it's currently 304 * functions. If all goes well, switch the task to the target patch in klp_try_switch_task() 381 * Try to switch all remaining tasks to the target patch state by walking the 386 * If any tasks are still stuck in the initial patch stat 392 struct klp_patch *patch; klp_try_complete_transition() local 504 klp_init_transition(struct klp_patch *patch, int state) klp_init_transition() argument 644 struct klp_patch *patch; klp_force_transition() local [all...] |
/kernel/linux/linux-5.10/scripts/ |
H A D | patch-kernel | 4 # usage: patch-kernel [ sourcedir [ patchdir [ stopversion ] [ -acxx ] ] ] 5 # The source directory defaults to /usr/src/linux, and the patch 8 # scripts/patch-kernel . .. 11 # scripts/patch-kernel . .. -ac 12 # Get the latest Linux kernel and patch it with the latest ac patch 13 # scripts/patch-kernel . .. 2.4.9 15 # scripts/patch-kernel . .. 2.4.9 -ac 17 # scripts/patch-kernel . .. 2.4.9 -ac11 18 # Gets 2.4.9 with ac patch ac1 [all...] |
/kernel/linux/linux-6.6/scripts/ |
H A D | patch-kernel | 4 # usage: patch-kernel [ sourcedir [ patchdir [ stopversion ] [ -acxx ] ] ] 5 # The source directory defaults to /usr/src/linux, and the patch 8 # scripts/patch-kernel . .. 11 # scripts/patch-kernel . .. -ac 12 # Get the latest Linux kernel and patch it with the latest ac patch 13 # scripts/patch-kernel . .. 2.4.9 15 # scripts/patch-kernel . .. 2.4.9 -ac 17 # scripts/patch-kernel . .. 2.4.9 -ac11 18 # Gets 2.4.9 with ac patch ac1 [all...] |
/kernel/linux/linux-5.10/sound/drivers/opl3/ |
H A D | opl3_synth.c | 231 * load a patch, obviously. 236 * name is the name string of the patch. 247 struct fm_patch *patch; in snd_opl3_load_patch() local 250 patch = snd_opl3_find_patch(opl3, prog, bank, 1); in snd_opl3_load_patch() 251 if (!patch) in snd_opl3_load_patch() 254 patch->type = type; in snd_opl3_load_patch() 257 patch->inst.op[i].am_vib = data[AM_VIB + i]; in snd_opl3_load_patch() 258 patch->inst.op[i].ksl_level = data[KSL_LEVEL + i]; in snd_opl3_load_patch() 259 patch->inst.op[i].attack_decay = data[ATTACK_DECAY + i]; in snd_opl3_load_patch() 260 patch in snd_opl3_load_patch() 309 struct fm_patch *patch; snd_opl3_find_patch() local 336 struct fm_patch *patch, *next; snd_opl3_clear_patches() local [all...] |
/kernel/linux/linux-6.6/sound/drivers/opl3/ |
H A D | opl3_synth.c | 231 * load a patch, obviously. 236 * name is the name string of the patch. 247 struct fm_patch *patch; in snd_opl3_load_patch() local 250 patch = snd_opl3_find_patch(opl3, prog, bank, 1); in snd_opl3_load_patch() 251 if (!patch) in snd_opl3_load_patch() 254 patch->type = type; in snd_opl3_load_patch() 257 patch->inst.op[i].am_vib = data[AM_VIB + i]; in snd_opl3_load_patch() 258 patch->inst.op[i].ksl_level = data[KSL_LEVEL + i]; in snd_opl3_load_patch() 259 patch->inst.op[i].attack_decay = data[ATTACK_DECAY + i]; in snd_opl3_load_patch() 260 patch in snd_opl3_load_patch() 309 struct fm_patch *patch; snd_opl3_find_patch() local 336 struct fm_patch *patch, *next; snd_opl3_clear_patches() local [all...] |
/kernel/linux/linux-5.10/arch/xtensa/kernel/ |
H A D | jump_label.c | 26 struct patch { struct 41 struct patch *patch = data; in patch_text_stop_machine() local 43 if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) { in patch_text_stop_machine() 44 local_patch_text(patch->addr, patch->data, patch->sz); in patch_text_stop_machine() 45 atomic_inc(&patch->cpu_count); in patch_text_stop_machine() 47 while (atomic_read(&patch->cpu_count) <= num_online_cpus()) in patch_text_stop_machine() 49 __invalidate_icache_range(patch in patch_text_stop_machine() 57 struct patch patch = { patch_text() local [all...] |
/kernel/linux/linux-6.6/arch/xtensa/kernel/ |
H A D | jump_label.c | 26 struct patch { struct 41 struct patch *patch = data; in patch_text_stop_machine() local 43 if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) { in patch_text_stop_machine() 44 local_patch_text(patch->addr, patch->data, patch->sz); in patch_text_stop_machine() 45 atomic_inc(&patch->cpu_count); in patch_text_stop_machine() 47 while (atomic_read(&patch->cpu_count) <= num_online_cpus()) in patch_text_stop_machine() 49 __invalidate_icache_range(patch in patch_text_stop_machine() 57 struct patch patch = { patch_text() local [all...] |
/kernel/linux/linux-5.10/sound/synth/emux/ |
H A D | emux_hwdep.c | 17 * load patch 23 struct soundfont_patch_info patch; in snd_emux_hwdep_load_patch() local 25 if (copy_from_user(&patch, arg, sizeof(patch))) in snd_emux_hwdep_load_patch() 28 if (patch.key == GUS_PATCH) in snd_emux_hwdep_load_patch() 30 patch.len + sizeof(patch), in snd_emux_hwdep_load_patch() 33 if (patch.type >= SNDRV_SFNT_LOAD_INFO && in snd_emux_hwdep_load_patch() 34 patch.type <= SNDRV_SFNT_PROBE_DATA) { in snd_emux_hwdep_load_patch() 35 err = snd_soundfont_load(emu->sflist, arg, patch in snd_emux_hwdep_load_patch() [all...] |
H A D | soundfont.c | 91 * close the patch if the patch was opened by this client. 108 * Deal with a soundfont patch. Any driver could use these routines 119 struct soundfont_patch_info patch; in snd_soundfont_load() local 123 if (count < (long)sizeof(patch)) { in snd_soundfont_load() 124 snd_printk(KERN_ERR "patch record too small %ld\n", count); in snd_soundfont_load() 127 if (copy_from_user(&patch, data, sizeof(patch))) in snd_soundfont_load() 130 count -= sizeof(patch); in snd_soundfont_load() 131 data += sizeof(patch); in snd_soundfont_load() 941 struct patch_info patch; load_guspatch() local [all...] |
/kernel/linux/linux-6.6/sound/synth/emux/ |
H A D | emux_hwdep.c | 17 * load patch 23 struct soundfont_patch_info patch; in snd_emux_hwdep_load_patch() local 25 if (copy_from_user(&patch, arg, sizeof(patch))) in snd_emux_hwdep_load_patch() 28 if (patch.key == GUS_PATCH) in snd_emux_hwdep_load_patch() 30 patch.len + sizeof(patch), in snd_emux_hwdep_load_patch() 33 if (patch.type >= SNDRV_SFNT_LOAD_INFO && in snd_emux_hwdep_load_patch() 34 patch.type <= SNDRV_SFNT_PROBE_DATA) { in snd_emux_hwdep_load_patch() 35 err = snd_soundfont_load(emu->sflist, arg, patch in snd_emux_hwdep_load_patch() [all...] |
H A D | soundfont.c | 91 * close the patch if the patch was opened by this client. 108 * Deal with a soundfont patch. Any driver could use these routines 119 struct soundfont_patch_info patch; in snd_soundfont_load() local 123 if (count < (long)sizeof(patch)) { in snd_soundfont_load() 124 snd_printk(KERN_ERR "patch record too small %ld\n", count); in snd_soundfont_load() 127 if (copy_from_user(&patch, data, sizeof(patch))) in snd_soundfont_load() 130 count -= sizeof(patch); in snd_soundfont_load() 131 data += sizeof(patch); in snd_soundfont_load() 947 struct patch_info patch; load_guspatch() local [all...] |
/kernel/linux/linux-5.10/arch/parisc/kernel/ |
H A D | patch.c | 3 * functions to patch RO kernel text during runtime 16 #include <asm/patch.h> 18 struct patch { struct 103 struct patch *patch = data; in patch_text_stop_machine() local 105 __patch_text_multiple(patch->addr, patch->insn, patch->len); in patch_text_stop_machine() 111 struct patch patch in patch_text() local 123 struct patch patch = { patch_text_multiple() local [all...] |
/kernel/linux/linux-6.6/arch/parisc/kernel/ |
H A D | patch.c | 3 * functions to patch RO kernel text during runtime 16 #include <asm/patch.h> 18 struct patch { struct 103 struct patch *patch = data; in patch_text_stop_machine() local 105 __patch_text_multiple(patch->addr, patch->insn, patch->len); in patch_text_stop_machine() 111 struct patch patch in patch_text() local 123 struct patch patch = { patch_text_multiple() local [all...] |
/kernel/linux/linux-5.10/arch/ia64/kernel/ |
H A D | vmlinux.lds.S | 85 .data..patch.phys_stack_reg : AT(ADDR(.data..patch.phys_stack_reg) - LOAD_OFFSET) { 87 *(.data..patch.phys_stack_reg) 126 .data..patch.vtop : AT(ADDR(.data..patch.vtop) - LOAD_OFFSET) { 128 *(.data..patch.vtop) 132 .data..patch.rse : AT(ADDR(.data..patch.rse) - LOAD_OFFSET) { 134 *(.data..patch.rse) 138 .data..patch [all...] |
/kernel/linux/linux-6.6/arch/ia64/kernel/ |
H A D | vmlinux.lds.S | 84 .data..patch.phys_stack_reg : AT(ADDR(.data..patch.phys_stack_reg) - LOAD_OFFSET) { 86 *(.data..patch.phys_stack_reg) 125 .data..patch.vtop : AT(ADDR(.data..patch.vtop) - LOAD_OFFSET) { 127 *(.data..patch.vtop) 131 .data..patch.rse : AT(ADDR(.data..patch.rse) - LOAD_OFFSET) { 133 *(.data..patch.rse) 137 .data..patch [all...] |
/kernel/linux/linux-5.10/arch/riscv/kernel/ |
H A D | patch.c | 15 #include <asm/patch.h> 118 struct patch_insn *patch = data; in patch_text_cb() local 121 if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) { in patch_text_cb() 123 patch_text_nosync(patch->addr, &patch->insn, in patch_text_cb() 124 GET_INSN_LENGTH(patch->insn)); in patch_text_cb() 125 atomic_inc(&patch->cpu_count); in patch_text_cb() 127 while (atomic_read(&patch->cpu_count) <= num_online_cpus()) in patch_text_cb() 139 struct patch_insn patch = { in patch_text() local 155 ret = stop_machine_cpuslocked(patch_text_cb, &patch, cpu_online_mas in patch_text() [all...] |
/kernel/linux/linux-5.10/arch/arm/kernel/ |
H A D | patch.c | 12 #include <asm/patch.h> 14 struct patch { struct 113 struct patch *patch = data; in patch_text_stop_machine() local 115 __patch_text(patch->addr, patch->insn); in patch_text_stop_machine() 122 struct patch patch = { in patch_text() local 127 stop_machine_cpuslocked(patch_text_stop_machine, &patch, NULL); in patch_text()
|
/kernel/linux/linux-6.6/arch/arm/kernel/ |
H A D | patch.c | 12 #include <asm/patch.h> 14 struct patch { struct 113 struct patch *patch = data; in patch_text_stop_machine() local 115 __patch_text(patch->addr, patch->insn); in patch_text_stop_machine() 122 struct patch patch = { in patch_text() local 127 stop_machine_cpuslocked(patch_text_stop_machine, &patch, NULL); in patch_text()
|
/kernel/linux/linux-6.6/arch/riscv/kernel/ |
H A D | patch.c | 16 #include <asm/patch.h> 228 struct patch_insn *patch = data; in patch_text_cb() local 232 if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) { in patch_text_cb() 233 for (i = 0; ret == 0 && i < patch->ninsns; i++) { in patch_text_cb() 234 len = GET_INSN_LENGTH(patch->insns[i]); in patch_text_cb() 235 ret = patch_text_nosync(patch->addr + i * len, in patch_text_cb() 236 &patch->insns[i], len); in patch_text_cb() 238 atomic_inc(&patch->cpu_count); in patch_text_cb() 240 while (atomic_read(&patch->cpu_count) <= num_online_cpus()) in patch_text_cb() 252 struct patch_insn patch in patch_text() local [all...] |
/kernel/linux/linux-5.10/lib/livepatch/ |
H A D | test_klp_state.c | 32 static struct klp_patch patch; variable 38 loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE); in allocate_loglevel_state() 55 loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE); in fix_console_loglevel() 68 loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE); in restore_console_loglevel() 80 loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE); in free_loglevel_state() 89 /* Executed on object patching (ie, patch enablement) */ 96 /* Executed on object unpatching (ie, patch disablement) */ 103 /* Executed on object unpatching (ie, patch disablement) */ 110 /* Executed on object unpatching (ie, patch disablement) */ 141 static struct klp_patch patch variable [all...] |