block: add debugfs stanza for QUEUE_FLAG_NOWAIT
[linux-2.6-microblaze.git] / kernel / livepatch / core.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * core.c - Kernel Live Patching Core
4  *
5  * Copyright (C) 2014 Seth Jennings <sjenning@redhat.com>
6  * Copyright (C) 2014 SUSE
7  */
8
9 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
10
11 #include <linux/module.h>
12 #include <linux/kernel.h>
13 #include <linux/mutex.h>
14 #include <linux/slab.h>
15 #include <linux/list.h>
16 #include <linux/kallsyms.h>
17 #include <linux/livepatch.h>
18 #include <linux/elf.h>
19 #include <linux/moduleloader.h>
20 #include <linux/completion.h>
21 #include <linux/memory.h>
22 #include <asm/cacheflush.h>
23 #include "core.h"
24 #include "patch.h"
25 #include "state.h"
26 #include "transition.h"
27
28 /*
29  * klp_mutex is a coarse lock which serializes access to klp data.  All
30  * accesses to klp-related variables and structures must have mutex protection,
31  * except within the following functions which carefully avoid the need for it:
32  *
33  * - klp_ftrace_handler()
34  * - klp_update_patch_state()
35  */
36 DEFINE_MUTEX(klp_mutex);
37
38 /*
39  * Actively used patches: enabled or in transition. Note that replaced
40  * or disabled patches are not listed even though the related kernel
41  * module still can be loaded.
42  */
43 LIST_HEAD(klp_patches);
44
45 static struct kobject *klp_root_kobj;
46
47 static bool klp_is_module(struct klp_object *obj)
48 {
49         return obj->name;
50 }
51
52 /* sets obj->mod if object is not vmlinux and module is found */
53 static void klp_find_object_module(struct klp_object *obj)
54 {
55         struct module *mod;
56
57         if (!klp_is_module(obj))
58                 return;
59
60         mutex_lock(&module_mutex);
61         /*
62          * We do not want to block removal of patched modules and therefore
63          * we do not take a reference here. The patches are removed by
64          * klp_module_going() instead.
65          */
66         mod = find_module(obj->name);
67         /*
68          * Do not mess work of klp_module_coming() and klp_module_going().
69          * Note that the patch might still be needed before klp_module_going()
70          * is called. Module functions can be called even in the GOING state
71          * until mod->exit() finishes. This is especially important for
72          * patches that modify semantic of the functions.
73          */
74         if (mod && mod->klp_alive)
75                 obj->mod = mod;
76
77         mutex_unlock(&module_mutex);
78 }
79
80 static bool klp_initialized(void)
81 {
82         return !!klp_root_kobj;
83 }
84
85 static struct klp_func *klp_find_func(struct klp_object *obj,
86                                       struct klp_func *old_func)
87 {
88         struct klp_func *func;
89
90         klp_for_each_func(obj, func) {
91                 if ((strcmp(old_func->old_name, func->old_name) == 0) &&
92                     (old_func->old_sympos == func->old_sympos)) {
93                         return func;
94                 }
95         }
96
97         return NULL;
98 }
99
100 static struct klp_object *klp_find_object(struct klp_patch *patch,
101                                           struct klp_object *old_obj)
102 {
103         struct klp_object *obj;
104
105         klp_for_each_object(patch, obj) {
106                 if (klp_is_module(old_obj)) {
107                         if (klp_is_module(obj) &&
108                             strcmp(old_obj->name, obj->name) == 0) {
109                                 return obj;
110                         }
111                 } else if (!klp_is_module(obj)) {
112                         return obj;
113                 }
114         }
115
116         return NULL;
117 }
118
119 struct klp_find_arg {
120         const char *objname;
121         const char *name;
122         unsigned long addr;
123         unsigned long count;
124         unsigned long pos;
125 };
126
127 static int klp_find_callback(void *data, const char *name,
128                              struct module *mod, unsigned long addr)
129 {
130         struct klp_find_arg *args = data;
131
132         if ((mod && !args->objname) || (!mod && args->objname))
133                 return 0;
134
135         if (strcmp(args->name, name))
136                 return 0;
137
138         if (args->objname && strcmp(args->objname, mod->name))
139                 return 0;
140
141         args->addr = addr;
142         args->count++;
143
144         /*
145          * Finish the search when the symbol is found for the desired position
146          * or the position is not defined for a non-unique symbol.
147          */
148         if ((args->pos && (args->count == args->pos)) ||
149             (!args->pos && (args->count > 1)))
150                 return 1;
151
152         return 0;
153 }
154
155 static int klp_find_object_symbol(const char *objname, const char *name,
156                                   unsigned long sympos, unsigned long *addr)
157 {
158         struct klp_find_arg args = {
159                 .objname = objname,
160                 .name = name,
161                 .addr = 0,
162                 .count = 0,
163                 .pos = sympos,
164         };
165
166         mutex_lock(&module_mutex);
167         if (objname)
168                 module_kallsyms_on_each_symbol(klp_find_callback, &args);
169         else
170                 kallsyms_on_each_symbol(klp_find_callback, &args);
171         mutex_unlock(&module_mutex);
172
173         /*
174          * Ensure an address was found. If sympos is 0, ensure symbol is unique;
175          * otherwise ensure the symbol position count matches sympos.
176          */
177         if (args.addr == 0)
178                 pr_err("symbol '%s' not found in symbol table\n", name);
179         else if (args.count > 1 && sympos == 0) {
180                 pr_err("unresolvable ambiguity for symbol '%s' in object '%s'\n",
181                        name, objname);
182         } else if (sympos != args.count && sympos > 0) {
183                 pr_err("symbol position %lu for symbol '%s' in object '%s' not found\n",
184                        sympos, name, objname ? objname : "vmlinux");
185         } else {
186                 *addr = args.addr;
187                 return 0;
188         }
189
190         *addr = 0;
191         return -EINVAL;
192 }
193
194 static int klp_resolve_symbols(Elf64_Shdr *sechdrs, const char *strtab,
195                                unsigned int symndx, Elf_Shdr *relasec,
196                                const char *sec_objname)
197 {
198         int i, cnt, ret;
199         char sym_objname[MODULE_NAME_LEN];
200         char sym_name[KSYM_NAME_LEN];
201         Elf_Rela *relas;
202         Elf_Sym *sym;
203         unsigned long sympos, addr;
204         bool sym_vmlinux;
205         bool sec_vmlinux = !strcmp(sec_objname, "vmlinux");
206
207         /*
208          * Since the field widths for sym_objname and sym_name in the sscanf()
209          * call are hard-coded and correspond to MODULE_NAME_LEN and
210          * KSYM_NAME_LEN respectively, we must make sure that MODULE_NAME_LEN
211          * and KSYM_NAME_LEN have the values we expect them to have.
212          *
213          * Because the value of MODULE_NAME_LEN can differ among architectures,
214          * we use the smallest/strictest upper bound possible (56, based on
215          * the current definition of MODULE_NAME_LEN) to prevent overflows.
216          */
217         BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 128);
218
219         relas = (Elf_Rela *) relasec->sh_addr;
220         /* For each rela in this klp relocation section */
221         for (i = 0; i < relasec->sh_size / sizeof(Elf_Rela); i++) {
222                 sym = (Elf64_Sym *)sechdrs[symndx].sh_addr + ELF_R_SYM(relas[i].r_info);
223                 if (sym->st_shndx != SHN_LIVEPATCH) {
224                         pr_err("symbol %s is not marked as a livepatch symbol\n",
225                                strtab + sym->st_name);
226                         return -EINVAL;
227                 }
228
229                 /* Format: .klp.sym.sym_objname.sym_name,sympos */
230                 cnt = sscanf(strtab + sym->st_name,
231                              ".klp.sym.%55[^.].%127[^,],%lu",
232                              sym_objname, sym_name, &sympos);
233                 if (cnt != 3) {
234                         pr_err("symbol %s has an incorrectly formatted name\n",
235                                strtab + sym->st_name);
236                         return -EINVAL;
237                 }
238
239                 sym_vmlinux = !strcmp(sym_objname, "vmlinux");
240
241                 /*
242                  * Prevent module-specific KLP rela sections from referencing
243                  * vmlinux symbols.  This helps prevent ordering issues with
244                  * module special section initializations.  Presumably such
245                  * symbols are exported and normal relas can be used instead.
246                  */
247                 if (!sec_vmlinux && sym_vmlinux) {
248                         pr_err("invalid access to vmlinux symbol '%s' from module-specific livepatch relocation section",
249                                sym_name);
250                         return -EINVAL;
251                 }
252
253                 /* klp_find_object_symbol() treats a NULL objname as vmlinux */
254                 ret = klp_find_object_symbol(sym_vmlinux ? NULL : sym_objname,
255                                              sym_name, sympos, &addr);
256                 if (ret)
257                         return ret;
258
259                 sym->st_value = addr;
260         }
261
262         return 0;
263 }
264
265 /*
266  * At a high-level, there are two types of klp relocation sections: those which
267  * reference symbols which live in vmlinux; and those which reference symbols
268  * which live in other modules.  This function is called for both types:
269  *
270  * 1) When a klp module itself loads, the module code calls this function to
271  *    write vmlinux-specific klp relocations (.klp.rela.vmlinux.* sections).
272  *    These relocations are written to the klp module text to allow the patched
273  *    code/data to reference unexported vmlinux symbols.  They're written as
274  *    early as possible to ensure that other module init code (.e.g.,
275  *    jump_label_apply_nops) can access any unexported vmlinux symbols which
276  *    might be referenced by the klp module's special sections.
277  *
278  * 2) When a to-be-patched module loads -- or is already loaded when a
279  *    corresponding klp module loads -- klp code calls this function to write
280  *    module-specific klp relocations (.klp.rela.{module}.* sections).  These
281  *    are written to the klp module text to allow the patched code/data to
282  *    reference symbols which live in the to-be-patched module or one of its
283  *    module dependencies.  Exported symbols are supported, in addition to
284  *    unexported symbols, in order to enable late module patching, which allows
285  *    the to-be-patched module to be loaded and patched sometime *after* the
286  *    klp module is loaded.
287  */
288 int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs,
289                              const char *shstrtab, const char *strtab,
290                              unsigned int symndx, unsigned int secndx,
291                              const char *objname)
292 {
293         int cnt, ret;
294         char sec_objname[MODULE_NAME_LEN];
295         Elf_Shdr *sec = sechdrs + secndx;
296
297         /*
298          * Format: .klp.rela.sec_objname.section_name
299          * See comment in klp_resolve_symbols() for an explanation
300          * of the selected field width value.
301          */
302         cnt = sscanf(shstrtab + sec->sh_name, ".klp.rela.%55[^.]",
303                      sec_objname);
304         if (cnt != 1) {
305                 pr_err("section %s has an incorrectly formatted name\n",
306                        shstrtab + sec->sh_name);
307                 return -EINVAL;
308         }
309
310         if (strcmp(objname ? objname : "vmlinux", sec_objname))
311                 return 0;
312
313         ret = klp_resolve_symbols(sechdrs, strtab, symndx, sec, sec_objname);
314         if (ret)
315                 return ret;
316
317         return apply_relocate_add(sechdrs, strtab, symndx, secndx, pmod);
318 }
319
320 /*
321  * Sysfs Interface
322  *
323  * /sys/kernel/livepatch
324  * /sys/kernel/livepatch/<patch>
325  * /sys/kernel/livepatch/<patch>/enabled
326  * /sys/kernel/livepatch/<patch>/transition
327  * /sys/kernel/livepatch/<patch>/force
328  * /sys/kernel/livepatch/<patch>/<object>
329  * /sys/kernel/livepatch/<patch>/<object>/<function,sympos>
330  */
331 static int __klp_disable_patch(struct klp_patch *patch);
332
333 static ssize_t enabled_store(struct kobject *kobj, struct kobj_attribute *attr,
334                              const char *buf, size_t count)
335 {
336         struct klp_patch *patch;
337         int ret;
338         bool enabled;
339
340         ret = kstrtobool(buf, &enabled);
341         if (ret)
342                 return ret;
343
344         patch = container_of(kobj, struct klp_patch, kobj);
345
346         mutex_lock(&klp_mutex);
347
348         if (patch->enabled == enabled) {
349                 /* already in requested state */
350                 ret = -EINVAL;
351                 goto out;
352         }
353
354         /*
355          * Allow to reverse a pending transition in both ways. It might be
356          * necessary to complete the transition without forcing and breaking
357          * the system integrity.
358          *
359          * Do not allow to re-enable a disabled patch.
360          */
361         if (patch == klp_transition_patch)
362                 klp_reverse_transition();
363         else if (!enabled)
364                 ret = __klp_disable_patch(patch);
365         else
366                 ret = -EINVAL;
367
368 out:
369         mutex_unlock(&klp_mutex);
370
371         if (ret)
372                 return ret;
373         return count;
374 }
375
376 static ssize_t enabled_show(struct kobject *kobj,
377                             struct kobj_attribute *attr, char *buf)
378 {
379         struct klp_patch *patch;
380
381         patch = container_of(kobj, struct klp_patch, kobj);
382         return snprintf(buf, PAGE_SIZE-1, "%d\n", patch->enabled);
383 }
384
385 static ssize_t transition_show(struct kobject *kobj,
386                                struct kobj_attribute *attr, char *buf)
387 {
388         struct klp_patch *patch;
389
390         patch = container_of(kobj, struct klp_patch, kobj);
391         return snprintf(buf, PAGE_SIZE-1, "%d\n",
392                         patch == klp_transition_patch);
393 }
394
395 static ssize_t force_store(struct kobject *kobj, struct kobj_attribute *attr,
396                            const char *buf, size_t count)
397 {
398         struct klp_patch *patch;
399         int ret;
400         bool val;
401
402         ret = kstrtobool(buf, &val);
403         if (ret)
404                 return ret;
405
406         if (!val)
407                 return count;
408
409         mutex_lock(&klp_mutex);
410
411         patch = container_of(kobj, struct klp_patch, kobj);
412         if (patch != klp_transition_patch) {
413                 mutex_unlock(&klp_mutex);
414                 return -EINVAL;
415         }
416
417         klp_force_transition();
418
419         mutex_unlock(&klp_mutex);
420
421         return count;
422 }
423
424 static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled);
425 static struct kobj_attribute transition_kobj_attr = __ATTR_RO(transition);
426 static struct kobj_attribute force_kobj_attr = __ATTR_WO(force);
427 static struct attribute *klp_patch_attrs[] = {
428         &enabled_kobj_attr.attr,
429         &transition_kobj_attr.attr,
430         &force_kobj_attr.attr,
431         NULL
432 };
433 ATTRIBUTE_GROUPS(klp_patch);
434
435 static void klp_free_object_dynamic(struct klp_object *obj)
436 {
437         kfree(obj->name);
438         kfree(obj);
439 }
440
441 static void klp_init_func_early(struct klp_object *obj,
442                                 struct klp_func *func);
443 static void klp_init_object_early(struct klp_patch *patch,
444                                   struct klp_object *obj);
445
446 static struct klp_object *klp_alloc_object_dynamic(const char *name,
447                                                    struct klp_patch *patch)
448 {
449         struct klp_object *obj;
450
451         obj = kzalloc(sizeof(*obj), GFP_KERNEL);
452         if (!obj)
453                 return NULL;
454
455         if (name) {
456                 obj->name = kstrdup(name, GFP_KERNEL);
457                 if (!obj->name) {
458                         kfree(obj);
459                         return NULL;
460                 }
461         }
462
463         klp_init_object_early(patch, obj);
464         obj->dynamic = true;
465
466         return obj;
467 }
468
469 static void klp_free_func_nop(struct klp_func *func)
470 {
471         kfree(func->old_name);
472         kfree(func);
473 }
474
475 static struct klp_func *klp_alloc_func_nop(struct klp_func *old_func,
476                                            struct klp_object *obj)
477 {
478         struct klp_func *func;
479
480         func = kzalloc(sizeof(*func), GFP_KERNEL);
481         if (!func)
482                 return NULL;
483
484         if (old_func->old_name) {
485                 func->old_name = kstrdup(old_func->old_name, GFP_KERNEL);
486                 if (!func->old_name) {
487                         kfree(func);
488                         return NULL;
489                 }
490         }
491
492         klp_init_func_early(obj, func);
493         /*
494          * func->new_func is same as func->old_func. These addresses are
495          * set when the object is loaded, see klp_init_object_loaded().
496          */
497         func->old_sympos = old_func->old_sympos;
498         func->nop = true;
499
500         return func;
501 }
502
503 static int klp_add_object_nops(struct klp_patch *patch,
504                                struct klp_object *old_obj)
505 {
506         struct klp_object *obj;
507         struct klp_func *func, *old_func;
508
509         obj = klp_find_object(patch, old_obj);
510
511         if (!obj) {
512                 obj = klp_alloc_object_dynamic(old_obj->name, patch);
513                 if (!obj)
514                         return -ENOMEM;
515         }
516
517         klp_for_each_func(old_obj, old_func) {
518                 func = klp_find_func(obj, old_func);
519                 if (func)
520                         continue;
521
522                 func = klp_alloc_func_nop(old_func, obj);
523                 if (!func)
524                         return -ENOMEM;
525         }
526
527         return 0;
528 }
529
530 /*
531  * Add 'nop' functions which simply return to the caller to run
532  * the original function. The 'nop' functions are added to a
533  * patch to facilitate a 'replace' mode.
534  */
535 static int klp_add_nops(struct klp_patch *patch)
536 {
537         struct klp_patch *old_patch;
538         struct klp_object *old_obj;
539
540         klp_for_each_patch(old_patch) {
541                 klp_for_each_object(old_patch, old_obj) {
542                         int err;
543
544                         err = klp_add_object_nops(patch, old_obj);
545                         if (err)
546                                 return err;
547                 }
548         }
549
550         return 0;
551 }
552
553 static void klp_kobj_release_patch(struct kobject *kobj)
554 {
555         struct klp_patch *patch;
556
557         patch = container_of(kobj, struct klp_patch, kobj);
558         complete(&patch->finish);
559 }
560
561 static struct kobj_type klp_ktype_patch = {
562         .release = klp_kobj_release_patch,
563         .sysfs_ops = &kobj_sysfs_ops,
564         .default_groups = klp_patch_groups,
565 };
566
567 static void klp_kobj_release_object(struct kobject *kobj)
568 {
569         struct klp_object *obj;
570
571         obj = container_of(kobj, struct klp_object, kobj);
572
573         if (obj->dynamic)
574                 klp_free_object_dynamic(obj);
575 }
576
577 static struct kobj_type klp_ktype_object = {
578         .release = klp_kobj_release_object,
579         .sysfs_ops = &kobj_sysfs_ops,
580 };
581
582 static void klp_kobj_release_func(struct kobject *kobj)
583 {
584         struct klp_func *func;
585
586         func = container_of(kobj, struct klp_func, kobj);
587
588         if (func->nop)
589                 klp_free_func_nop(func);
590 }
591
592 static struct kobj_type klp_ktype_func = {
593         .release = klp_kobj_release_func,
594         .sysfs_ops = &kobj_sysfs_ops,
595 };
596
597 static void __klp_free_funcs(struct klp_object *obj, bool nops_only)
598 {
599         struct klp_func *func, *tmp_func;
600
601         klp_for_each_func_safe(obj, func, tmp_func) {
602                 if (nops_only && !func->nop)
603                         continue;
604
605                 list_del(&func->node);
606                 kobject_put(&func->kobj);
607         }
608 }
609
610 /* Clean up when a patched object is unloaded */
611 static void klp_free_object_loaded(struct klp_object *obj)
612 {
613         struct klp_func *func;
614
615         obj->mod = NULL;
616
617         klp_for_each_func(obj, func) {
618                 func->old_func = NULL;
619
620                 if (func->nop)
621                         func->new_func = NULL;
622         }
623 }
624
625 static void __klp_free_objects(struct klp_patch *patch, bool nops_only)
626 {
627         struct klp_object *obj, *tmp_obj;
628
629         klp_for_each_object_safe(patch, obj, tmp_obj) {
630                 __klp_free_funcs(obj, nops_only);
631
632                 if (nops_only && !obj->dynamic)
633                         continue;
634
635                 list_del(&obj->node);
636                 kobject_put(&obj->kobj);
637         }
638 }
639
640 static void klp_free_objects(struct klp_patch *patch)
641 {
642         __klp_free_objects(patch, false);
643 }
644
645 static void klp_free_objects_dynamic(struct klp_patch *patch)
646 {
647         __klp_free_objects(patch, true);
648 }
649
650 /*
651  * This function implements the free operations that can be called safely
652  * under klp_mutex.
653  *
654  * The operation must be completed by calling klp_free_patch_finish()
655  * outside klp_mutex.
656  */
657 static void klp_free_patch_start(struct klp_patch *patch)
658 {
659         if (!list_empty(&patch->list))
660                 list_del(&patch->list);
661
662         klp_free_objects(patch);
663 }
664
665 /*
666  * This function implements the free part that must be called outside
667  * klp_mutex.
668  *
669  * It must be called after klp_free_patch_start(). And it has to be
670  * the last function accessing the livepatch structures when the patch
671  * gets disabled.
672  */
673 static void klp_free_patch_finish(struct klp_patch *patch)
674 {
675         /*
676          * Avoid deadlock with enabled_store() sysfs callback by
677          * calling this outside klp_mutex. It is safe because
678          * this is called when the patch gets disabled and it
679          * cannot get enabled again.
680          */
681         kobject_put(&patch->kobj);
682         wait_for_completion(&patch->finish);
683
684         /* Put the module after the last access to struct klp_patch. */
685         if (!patch->forced)
686                 module_put(patch->mod);
687 }
688
689 /*
690  * The livepatch might be freed from sysfs interface created by the patch.
691  * This work allows to wait until the interface is destroyed in a separate
692  * context.
693  */
694 static void klp_free_patch_work_fn(struct work_struct *work)
695 {
696         struct klp_patch *patch =
697                 container_of(work, struct klp_patch, free_work);
698
699         klp_free_patch_finish(patch);
700 }
701
702 void klp_free_patch_async(struct klp_patch *patch)
703 {
704         klp_free_patch_start(patch);
705         schedule_work(&patch->free_work);
706 }
707
708 void klp_free_replaced_patches_async(struct klp_patch *new_patch)
709 {
710         struct klp_patch *old_patch, *tmp_patch;
711
712         klp_for_each_patch_safe(old_patch, tmp_patch) {
713                 if (old_patch == new_patch)
714                         return;
715                 klp_free_patch_async(old_patch);
716         }
717 }
718
719 static int klp_init_func(struct klp_object *obj, struct klp_func *func)
720 {
721         if (!func->old_name)
722                 return -EINVAL;
723
724         /*
725          * NOPs get the address later. The patched module must be loaded,
726          * see klp_init_object_loaded().
727          */
728         if (!func->new_func && !func->nop)
729                 return -EINVAL;
730
731         if (strlen(func->old_name) >= KSYM_NAME_LEN)
732                 return -EINVAL;
733
734         INIT_LIST_HEAD(&func->stack_node);
735         func->patched = false;
736         func->transition = false;
737
738         /* The format for the sysfs directory is <function,sympos> where sympos
739          * is the nth occurrence of this symbol in kallsyms for the patched
740          * object. If the user selects 0 for old_sympos, then 1 will be used
741          * since a unique symbol will be the first occurrence.
742          */
743         return kobject_add(&func->kobj, &obj->kobj, "%s,%lu",
744                            func->old_name,
745                            func->old_sympos ? func->old_sympos : 1);
746 }
747
748 static int klp_apply_object_relocs(struct klp_patch *patch,
749                                    struct klp_object *obj)
750 {
751         int i, ret;
752         struct klp_modinfo *info = patch->mod->klp_info;
753
754         for (i = 1; i < info->hdr.e_shnum; i++) {
755                 Elf_Shdr *sec = info->sechdrs + i;
756
757                 if (!(sec->sh_flags & SHF_RELA_LIVEPATCH))
758                         continue;
759
760                 ret = klp_apply_section_relocs(patch->mod, info->sechdrs,
761                                                info->secstrings,
762                                                patch->mod->core_kallsyms.strtab,
763                                                info->symndx, i, obj->name);
764                 if (ret)
765                         return ret;
766         }
767
768         return 0;
769 }
770
771 /* parts of the initialization that is done only when the object is loaded */
772 static int klp_init_object_loaded(struct klp_patch *patch,
773                                   struct klp_object *obj)
774 {
775         struct klp_func *func;
776         int ret;
777
778         if (klp_is_module(obj)) {
779                 /*
780                  * Only write module-specific relocations here
781                  * (.klp.rela.{module}.*).  vmlinux-specific relocations were
782                  * written earlier during the initialization of the klp module
783                  * itself.
784                  */
785                 ret = klp_apply_object_relocs(patch, obj);
786                 if (ret)
787                         return ret;
788         }
789
790         klp_for_each_func(obj, func) {
791                 ret = klp_find_object_symbol(obj->name, func->old_name,
792                                              func->old_sympos,
793                                              (unsigned long *)&func->old_func);
794                 if (ret)
795                         return ret;
796
797                 ret = kallsyms_lookup_size_offset((unsigned long)func->old_func,
798                                                   &func->old_size, NULL);
799                 if (!ret) {
800                         pr_err("kallsyms size lookup failed for '%s'\n",
801                                func->old_name);
802                         return -ENOENT;
803                 }
804
805                 if (func->nop)
806                         func->new_func = func->old_func;
807
808                 ret = kallsyms_lookup_size_offset((unsigned long)func->new_func,
809                                                   &func->new_size, NULL);
810                 if (!ret) {
811                         pr_err("kallsyms size lookup failed for '%s' replacement\n",
812                                func->old_name);
813                         return -ENOENT;
814                 }
815         }
816
817         return 0;
818 }
819
820 static int klp_init_object(struct klp_patch *patch, struct klp_object *obj)
821 {
822         struct klp_func *func;
823         int ret;
824         const char *name;
825
826         if (klp_is_module(obj) && strlen(obj->name) >= MODULE_NAME_LEN)
827                 return -EINVAL;
828
829         obj->patched = false;
830         obj->mod = NULL;
831
832         klp_find_object_module(obj);
833
834         name = klp_is_module(obj) ? obj->name : "vmlinux";
835         ret = kobject_add(&obj->kobj, &patch->kobj, "%s", name);
836         if (ret)
837                 return ret;
838
839         klp_for_each_func(obj, func) {
840                 ret = klp_init_func(obj, func);
841                 if (ret)
842                         return ret;
843         }
844
845         if (klp_is_object_loaded(obj))
846                 ret = klp_init_object_loaded(patch, obj);
847
848         return ret;
849 }
850
851 static void klp_init_func_early(struct klp_object *obj,
852                                 struct klp_func *func)
853 {
854         kobject_init(&func->kobj, &klp_ktype_func);
855         list_add_tail(&func->node, &obj->func_list);
856 }
857
858 static void klp_init_object_early(struct klp_patch *patch,
859                                   struct klp_object *obj)
860 {
861         INIT_LIST_HEAD(&obj->func_list);
862         kobject_init(&obj->kobj, &klp_ktype_object);
863         list_add_tail(&obj->node, &patch->obj_list);
864 }
865
866 static int klp_init_patch_early(struct klp_patch *patch)
867 {
868         struct klp_object *obj;
869         struct klp_func *func;
870
871         if (!patch->objs)
872                 return -EINVAL;
873
874         INIT_LIST_HEAD(&patch->list);
875         INIT_LIST_HEAD(&patch->obj_list);
876         kobject_init(&patch->kobj, &klp_ktype_patch);
877         patch->enabled = false;
878         patch->forced = false;
879         INIT_WORK(&patch->free_work, klp_free_patch_work_fn);
880         init_completion(&patch->finish);
881
882         klp_for_each_object_static(patch, obj) {
883                 if (!obj->funcs)
884                         return -EINVAL;
885
886                 klp_init_object_early(patch, obj);
887
888                 klp_for_each_func_static(obj, func) {
889                         klp_init_func_early(obj, func);
890                 }
891         }
892
893         if (!try_module_get(patch->mod))
894                 return -ENODEV;
895
896         return 0;
897 }
898
899 static int klp_init_patch(struct klp_patch *patch)
900 {
901         struct klp_object *obj;
902         int ret;
903
904         ret = kobject_add(&patch->kobj, klp_root_kobj, "%s", patch->mod->name);
905         if (ret)
906                 return ret;
907
908         if (patch->replace) {
909                 ret = klp_add_nops(patch);
910                 if (ret)
911                         return ret;
912         }
913
914         klp_for_each_object(patch, obj) {
915                 ret = klp_init_object(patch, obj);
916                 if (ret)
917                         return ret;
918         }
919
920         list_add_tail(&patch->list, &klp_patches);
921
922         return 0;
923 }
924
925 static int __klp_disable_patch(struct klp_patch *patch)
926 {
927         struct klp_object *obj;
928
929         if (WARN_ON(!patch->enabled))
930                 return -EINVAL;
931
932         if (klp_transition_patch)
933                 return -EBUSY;
934
935         klp_init_transition(patch, KLP_UNPATCHED);
936
937         klp_for_each_object(patch, obj)
938                 if (obj->patched)
939                         klp_pre_unpatch_callback(obj);
940
941         /*
942          * Enforce the order of the func->transition writes in
943          * klp_init_transition() and the TIF_PATCH_PENDING writes in
944          * klp_start_transition().  In the rare case where klp_ftrace_handler()
945          * is called shortly after klp_update_patch_state() switches the task,
946          * this ensures the handler sees that func->transition is set.
947          */
948         smp_wmb();
949
950         klp_start_transition();
951         patch->enabled = false;
952         klp_try_complete_transition();
953
954         return 0;
955 }
956
957 static int __klp_enable_patch(struct klp_patch *patch)
958 {
959         struct klp_object *obj;
960         int ret;
961
962         if (klp_transition_patch)
963                 return -EBUSY;
964
965         if (WARN_ON(patch->enabled))
966                 return -EINVAL;
967
968         pr_notice("enabling patch '%s'\n", patch->mod->name);
969
970         klp_init_transition(patch, KLP_PATCHED);
971
972         /*
973          * Enforce the order of the func->transition writes in
974          * klp_init_transition() and the ops->func_stack writes in
975          * klp_patch_object(), so that klp_ftrace_handler() will see the
976          * func->transition updates before the handler is registered and the
977          * new funcs become visible to the handler.
978          */
979         smp_wmb();
980
981         klp_for_each_object(patch, obj) {
982                 if (!klp_is_object_loaded(obj))
983                         continue;
984
985                 ret = klp_pre_patch_callback(obj);
986                 if (ret) {
987                         pr_warn("pre-patch callback failed for object '%s'\n",
988                                 klp_is_module(obj) ? obj->name : "vmlinux");
989                         goto err;
990                 }
991
992                 ret = klp_patch_object(obj);
993                 if (ret) {
994                         pr_warn("failed to patch object '%s'\n",
995                                 klp_is_module(obj) ? obj->name : "vmlinux");
996                         goto err;
997                 }
998         }
999
1000         klp_start_transition();
1001         patch->enabled = true;
1002         klp_try_complete_transition();
1003
1004         return 0;
1005 err:
1006         pr_warn("failed to enable patch '%s'\n", patch->mod->name);
1007
1008         klp_cancel_transition();
1009         return ret;
1010 }
1011
1012 /**
1013  * klp_enable_patch() - enable the livepatch
1014  * @patch:      patch to be enabled
1015  *
1016  * Initializes the data structure associated with the patch, creates the sysfs
1017  * interface, performs the needed symbol lookups and code relocations,
1018  * registers the patched functions with ftrace.
1019  *
1020  * This function is supposed to be called from the livepatch module_init()
1021  * callback.
1022  *
1023  * Return: 0 on success, otherwise error
1024  */
1025 int klp_enable_patch(struct klp_patch *patch)
1026 {
1027         int ret;
1028
1029         if (!patch || !patch->mod)
1030                 return -EINVAL;
1031
1032         if (!is_livepatch_module(patch->mod)) {
1033                 pr_err("module %s is not marked as a livepatch module\n",
1034                        patch->mod->name);
1035                 return -EINVAL;
1036         }
1037
1038         if (!klp_initialized())
1039                 return -ENODEV;
1040
1041         if (!klp_have_reliable_stack()) {
1042                 pr_warn("This architecture doesn't have support for the livepatch consistency model.\n");
1043                 pr_warn("The livepatch transition may never complete.\n");
1044         }
1045
1046         mutex_lock(&klp_mutex);
1047
1048         if (!klp_is_patch_compatible(patch)) {
1049                 pr_err("Livepatch patch (%s) is not compatible with the already installed livepatches.\n",
1050                         patch->mod->name);
1051                 mutex_unlock(&klp_mutex);
1052                 return -EINVAL;
1053         }
1054
1055         ret = klp_init_patch_early(patch);
1056         if (ret) {
1057                 mutex_unlock(&klp_mutex);
1058                 return ret;
1059         }
1060
1061         ret = klp_init_patch(patch);
1062         if (ret)
1063                 goto err;
1064
1065         ret = __klp_enable_patch(patch);
1066         if (ret)
1067                 goto err;
1068
1069         mutex_unlock(&klp_mutex);
1070
1071         return 0;
1072
1073 err:
1074         klp_free_patch_start(patch);
1075
1076         mutex_unlock(&klp_mutex);
1077
1078         klp_free_patch_finish(patch);
1079
1080         return ret;
1081 }
1082 EXPORT_SYMBOL_GPL(klp_enable_patch);
1083
1084 /*
1085  * This function unpatches objects from the replaced livepatches.
1086  *
1087  * We could be pretty aggressive here. It is called in the situation where
1088  * these structures are no longer accessed from the ftrace handler.
1089  * All functions are redirected by the klp_transition_patch. They
1090  * use either a new code or they are in the original code because
1091  * of the special nop function patches.
1092  *
1093  * The only exception is when the transition was forced. In this case,
1094  * klp_ftrace_handler() might still see the replaced patch on the stack.
1095  * Fortunately, it is carefully designed to work with removed functions
1096  * thanks to RCU. We only have to keep the patches on the system. Also
1097  * this is handled transparently by patch->module_put.
1098  */
1099 void klp_unpatch_replaced_patches(struct klp_patch *new_patch)
1100 {
1101         struct klp_patch *old_patch;
1102
1103         klp_for_each_patch(old_patch) {
1104                 if (old_patch == new_patch)
1105                         return;
1106
1107                 old_patch->enabled = false;
1108                 klp_unpatch_objects(old_patch);
1109         }
1110 }
1111
1112 /*
1113  * This function removes the dynamically allocated 'nop' functions.
1114  *
1115  * We could be pretty aggressive. NOPs do not change the existing
1116  * behavior except for adding unnecessary delay by the ftrace handler.
1117  *
1118  * It is safe even when the transition was forced. The ftrace handler
1119  * will see a valid ops->func_stack entry thanks to RCU.
1120  *
1121  * We could even free the NOPs structures. They must be the last entry
1122  * in ops->func_stack. Therefore unregister_ftrace_function() is called.
1123  * It does the same as klp_synchronize_transition() to make sure that
1124  * nobody is inside the ftrace handler once the operation finishes.
1125  *
1126  * IMPORTANT: It must be called right after removing the replaced patches!
1127  */
1128 void klp_discard_nops(struct klp_patch *new_patch)
1129 {
1130         klp_unpatch_objects_dynamic(klp_transition_patch);
1131         klp_free_objects_dynamic(klp_transition_patch);
1132 }
1133
1134 /*
1135  * Remove parts of patches that touch a given kernel module. The list of
1136  * patches processed might be limited. When limit is NULL, all patches
1137  * will be handled.
1138  */
1139 static void klp_cleanup_module_patches_limited(struct module *mod,
1140                                                struct klp_patch *limit)
1141 {
1142         struct klp_patch *patch;
1143         struct klp_object *obj;
1144
1145         klp_for_each_patch(patch) {
1146                 if (patch == limit)
1147                         break;
1148
1149                 klp_for_each_object(patch, obj) {
1150                         if (!klp_is_module(obj) || strcmp(obj->name, mod->name))
1151                                 continue;
1152
1153                         if (patch != klp_transition_patch)
1154                                 klp_pre_unpatch_callback(obj);
1155
1156                         pr_notice("reverting patch '%s' on unloading module '%s'\n",
1157                                   patch->mod->name, obj->mod->name);
1158                         klp_unpatch_object(obj);
1159
1160                         klp_post_unpatch_callback(obj);
1161
1162                         klp_free_object_loaded(obj);
1163                         break;
1164                 }
1165         }
1166 }
1167
1168 int klp_module_coming(struct module *mod)
1169 {
1170         int ret;
1171         struct klp_patch *patch;
1172         struct klp_object *obj;
1173
1174         if (WARN_ON(mod->state != MODULE_STATE_COMING))
1175                 return -EINVAL;
1176
1177         if (!strcmp(mod->name, "vmlinux")) {
1178                 pr_err("vmlinux.ko: invalid module name");
1179                 return -EINVAL;
1180         }
1181
1182         mutex_lock(&klp_mutex);
1183         /*
1184          * Each module has to know that klp_module_coming()
1185          * has been called. We never know what module will
1186          * get patched by a new patch.
1187          */
1188         mod->klp_alive = true;
1189
1190         klp_for_each_patch(patch) {
1191                 klp_for_each_object(patch, obj) {
1192                         if (!klp_is_module(obj) || strcmp(obj->name, mod->name))
1193                                 continue;
1194
1195                         obj->mod = mod;
1196
1197                         ret = klp_init_object_loaded(patch, obj);
1198                         if (ret) {
1199                                 pr_warn("failed to initialize patch '%s' for module '%s' (%d)\n",
1200                                         patch->mod->name, obj->mod->name, ret);
1201                                 goto err;
1202                         }
1203
1204                         pr_notice("applying patch '%s' to loading module '%s'\n",
1205                                   patch->mod->name, obj->mod->name);
1206
1207                         ret = klp_pre_patch_callback(obj);
1208                         if (ret) {
1209                                 pr_warn("pre-patch callback failed for object '%s'\n",
1210                                         obj->name);
1211                                 goto err;
1212                         }
1213
1214                         ret = klp_patch_object(obj);
1215                         if (ret) {
1216                                 pr_warn("failed to apply patch '%s' to module '%s' (%d)\n",
1217                                         patch->mod->name, obj->mod->name, ret);
1218
1219                                 klp_post_unpatch_callback(obj);
1220                                 goto err;
1221                         }
1222
1223                         if (patch != klp_transition_patch)
1224                                 klp_post_patch_callback(obj);
1225
1226                         break;
1227                 }
1228         }
1229
1230         mutex_unlock(&klp_mutex);
1231
1232         return 0;
1233
1234 err:
1235         /*
1236          * If a patch is unsuccessfully applied, return
1237          * error to the module loader.
1238          */
1239         pr_warn("patch '%s' failed for module '%s', refusing to load module '%s'\n",
1240                 patch->mod->name, obj->mod->name, obj->mod->name);
1241         mod->klp_alive = false;
1242         obj->mod = NULL;
1243         klp_cleanup_module_patches_limited(mod, patch);
1244         mutex_unlock(&klp_mutex);
1245
1246         return ret;
1247 }
1248
1249 void klp_module_going(struct module *mod)
1250 {
1251         if (WARN_ON(mod->state != MODULE_STATE_GOING &&
1252                     mod->state != MODULE_STATE_COMING))
1253                 return;
1254
1255         mutex_lock(&klp_mutex);
1256         /*
1257          * Each module has to know that klp_module_going()
1258          * has been called. We never know what module will
1259          * get patched by a new patch.
1260          */
1261         mod->klp_alive = false;
1262
1263         klp_cleanup_module_patches_limited(mod, NULL);
1264
1265         mutex_unlock(&klp_mutex);
1266 }
1267
1268 static int __init klp_init(void)
1269 {
1270         klp_root_kobj = kobject_create_and_add("livepatch", kernel_kobj);
1271         if (!klp_root_kobj)
1272                 return -ENOMEM;
1273
1274         return 0;
1275 }
1276
1277 module_init(klp_init);