module: Allow to always show the status of modsign
[sfrench/cifs-2.6.git] / kernel / module.c
1 /*
2    Copyright (C) 2002 Richard Henderson
3    Copyright (C) 2001 Rusty Russell, 2002, 2010 Rusty Russell IBM.
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 */
19 #include <linux/export.h>
20 #include <linux/extable.h>
21 #include <linux/moduleloader.h>
22 #include <linux/trace_events.h>
23 #include <linux/init.h>
24 #include <linux/kallsyms.h>
25 #include <linux/file.h>
26 #include <linux/fs.h>
27 #include <linux/sysfs.h>
28 #include <linux/kernel.h>
29 #include <linux/slab.h>
30 #include <linux/vmalloc.h>
31 #include <linux/elf.h>
32 #include <linux/proc_fs.h>
33 #include <linux/security.h>
34 #include <linux/seq_file.h>
35 #include <linux/syscalls.h>
36 #include <linux/fcntl.h>
37 #include <linux/rcupdate.h>
38 #include <linux/capability.h>
39 #include <linux/cpu.h>
40 #include <linux/moduleparam.h>
41 #include <linux/errno.h>
42 #include <linux/err.h>
43 #include <linux/vermagic.h>
44 #include <linux/notifier.h>
45 #include <linux/sched.h>
46 #include <linux/device.h>
47 #include <linux/string.h>
48 #include <linux/mutex.h>
49 #include <linux/rculist.h>
50 #include <linux/uaccess.h>
51 #include <asm/cacheflush.h>
52 #include <linux/set_memory.h>
53 #include <asm/mmu_context.h>
54 #include <linux/license.h>
55 #include <asm/sections.h>
56 #include <linux/tracepoint.h>
57 #include <linux/ftrace.h>
58 #include <linux/livepatch.h>
59 #include <linux/async.h>
60 #include <linux/percpu.h>
61 #include <linux/kmemleak.h>
62 #include <linux/jump_label.h>
63 #include <linux/pfn.h>
64 #include <linux/bsearch.h>
65 #include <linux/dynamic_debug.h>
66 #include <linux/audit.h>
67 #include <uapi/linux/module.h>
68 #include "module-internal.h"
69
70 #define CREATE_TRACE_POINTS
71 #include <trace/events/module.h>
72
73 #ifndef ARCH_SHF_SMALL
74 #define ARCH_SHF_SMALL 0
75 #endif
76
77 /*
78  * Modules' sections will be aligned on page boundaries
79  * to ensure complete separation of code and data, but
80  * only when CONFIG_STRICT_MODULE_RWX=y
81  */
82 #ifdef CONFIG_STRICT_MODULE_RWX
83 # define debug_align(X) ALIGN(X, PAGE_SIZE)
84 #else
85 # define debug_align(X) (X)
86 #endif
87
88 /* If this is set, the section belongs in the init part of the module */
89 #define INIT_OFFSET_MASK (1UL << (BITS_PER_LONG-1))
90
91 /*
92  * Mutex protects:
93  * 1) List of modules (also safely readable with preempt_disable),
94  * 2) module_use links,
95  * 3) module_addr_min/module_addr_max.
96  * (delete and add uses RCU list operations). */
97 DEFINE_MUTEX(module_mutex);
98 EXPORT_SYMBOL_GPL(module_mutex);
99 static LIST_HEAD(modules);
100
101 #ifdef CONFIG_MODULES_TREE_LOOKUP
102
103 /*
104  * Use a latched RB-tree for __module_address(); this allows us to use
105  * RCU-sched lookups of the address from any context.
106  *
107  * This is conditional on PERF_EVENTS || TRACING because those can really hit
108  * __module_address() hard by doing a lot of stack unwinding; potentially from
109  * NMI context.
110  */
111
112 static __always_inline unsigned long __mod_tree_val(struct latch_tree_node *n)
113 {
114         struct module_layout *layout = container_of(n, struct module_layout, mtn.node);
115
116         return (unsigned long)layout->base;
117 }
118
119 static __always_inline unsigned long __mod_tree_size(struct latch_tree_node *n)
120 {
121         struct module_layout *layout = container_of(n, struct module_layout, mtn.node);
122
123         return (unsigned long)layout->size;
124 }
125
126 static __always_inline bool
127 mod_tree_less(struct latch_tree_node *a, struct latch_tree_node *b)
128 {
129         return __mod_tree_val(a) < __mod_tree_val(b);
130 }
131
132 static __always_inline int
133 mod_tree_comp(void *key, struct latch_tree_node *n)
134 {
135         unsigned long val = (unsigned long)key;
136         unsigned long start, end;
137
138         start = __mod_tree_val(n);
139         if (val < start)
140                 return -1;
141
142         end = start + __mod_tree_size(n);
143         if (val >= end)
144                 return 1;
145
146         return 0;
147 }
148
149 static const struct latch_tree_ops mod_tree_ops = {
150         .less = mod_tree_less,
151         .comp = mod_tree_comp,
152 };
153
154 static struct mod_tree_root {
155         struct latch_tree_root root;
156         unsigned long addr_min;
157         unsigned long addr_max;
158 } mod_tree __cacheline_aligned = {
159         .addr_min = -1UL,
160 };
161
162 #define module_addr_min mod_tree.addr_min
163 #define module_addr_max mod_tree.addr_max
164
165 static noinline void __mod_tree_insert(struct mod_tree_node *node)
166 {
167         latch_tree_insert(&node->node, &mod_tree.root, &mod_tree_ops);
168 }
169
170 static void __mod_tree_remove(struct mod_tree_node *node)
171 {
172         latch_tree_erase(&node->node, &mod_tree.root, &mod_tree_ops);
173 }
174
175 /*
176  * These modifications: insert, remove_init and remove; are serialized by the
177  * module_mutex.
178  */
179 static void mod_tree_insert(struct module *mod)
180 {
181         mod->core_layout.mtn.mod = mod;
182         mod->init_layout.mtn.mod = mod;
183
184         __mod_tree_insert(&mod->core_layout.mtn);
185         if (mod->init_layout.size)
186                 __mod_tree_insert(&mod->init_layout.mtn);
187 }
188
189 static void mod_tree_remove_init(struct module *mod)
190 {
191         if (mod->init_layout.size)
192                 __mod_tree_remove(&mod->init_layout.mtn);
193 }
194
195 static void mod_tree_remove(struct module *mod)
196 {
197         __mod_tree_remove(&mod->core_layout.mtn);
198         mod_tree_remove_init(mod);
199 }
200
201 static struct module *mod_find(unsigned long addr)
202 {
203         struct latch_tree_node *ltn;
204
205         ltn = latch_tree_find((void *)addr, &mod_tree.root, &mod_tree_ops);
206         if (!ltn)
207                 return NULL;
208
209         return container_of(ltn, struct mod_tree_node, node)->mod;
210 }
211
212 #else /* MODULES_TREE_LOOKUP */
213
214 static unsigned long module_addr_min = -1UL, module_addr_max = 0;
215
216 static void mod_tree_insert(struct module *mod) { }
217 static void mod_tree_remove_init(struct module *mod) { }
218 static void mod_tree_remove(struct module *mod) { }
219
220 static struct module *mod_find(unsigned long addr)
221 {
222         struct module *mod;
223
224         list_for_each_entry_rcu(mod, &modules, list) {
225                 if (within_module(addr, mod))
226                         return mod;
227         }
228
229         return NULL;
230 }
231
232 #endif /* MODULES_TREE_LOOKUP */
233
234 /*
235  * Bounds of module text, for speeding up __module_address.
236  * Protected by module_mutex.
237  */
238 static void __mod_update_bounds(void *base, unsigned int size)
239 {
240         unsigned long min = (unsigned long)base;
241         unsigned long max = min + size;
242
243         if (min < module_addr_min)
244                 module_addr_min = min;
245         if (max > module_addr_max)
246                 module_addr_max = max;
247 }
248
249 static void mod_update_bounds(struct module *mod)
250 {
251         __mod_update_bounds(mod->core_layout.base, mod->core_layout.size);
252         if (mod->init_layout.size)
253                 __mod_update_bounds(mod->init_layout.base, mod->init_layout.size);
254 }
255
256 #ifdef CONFIG_KGDB_KDB
257 struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
258 #endif /* CONFIG_KGDB_KDB */
259
260 static void module_assert_mutex(void)
261 {
262         lockdep_assert_held(&module_mutex);
263 }
264
265 static void module_assert_mutex_or_preempt(void)
266 {
267 #ifdef CONFIG_LOCKDEP
268         if (unlikely(!debug_locks))
269                 return;
270
271         WARN_ON_ONCE(!rcu_read_lock_sched_held() &&
272                 !lockdep_is_held(&module_mutex));
273 #endif
274 }
275
276 static bool sig_enforce = IS_ENABLED(CONFIG_MODULE_SIG_FORCE);
277 module_param(sig_enforce, bool_enable_only, 0644);
278
279 /*
280  * Export sig_enforce kernel cmdline parameter to allow other subsystems rely
281  * on that instead of directly to CONFIG_MODULE_SIG_FORCE config.
282  */
283 bool is_module_sig_enforced(void)
284 {
285         return sig_enforce;
286 }
287 EXPORT_SYMBOL(is_module_sig_enforced);
288
289 /* Block module loading/unloading? */
290 int modules_disabled = 0;
291 core_param(nomodule, modules_disabled, bint, 0);
292
293 /* Waiting for a module to finish initializing? */
294 static DECLARE_WAIT_QUEUE_HEAD(module_wq);
295
296 static BLOCKING_NOTIFIER_HEAD(module_notify_list);
297
298 int register_module_notifier(struct notifier_block *nb)
299 {
300         return blocking_notifier_chain_register(&module_notify_list, nb);
301 }
302 EXPORT_SYMBOL(register_module_notifier);
303
304 int unregister_module_notifier(struct notifier_block *nb)
305 {
306         return blocking_notifier_chain_unregister(&module_notify_list, nb);
307 }
308 EXPORT_SYMBOL(unregister_module_notifier);
309
310 struct load_info {
311         const char *name;
312         Elf_Ehdr *hdr;
313         unsigned long len;
314         Elf_Shdr *sechdrs;
315         char *secstrings, *strtab;
316         unsigned long symoffs, stroffs;
317         struct _ddebug *debug;
318         unsigned int num_debug;
319         bool sig_ok;
320 #ifdef CONFIG_KALLSYMS
321         unsigned long mod_kallsyms_init_off;
322 #endif
323         struct {
324                 unsigned int sym, str, mod, vers, info, pcpu;
325         } index;
326 };
327
328 /*
329  * We require a truly strong try_module_get(): 0 means success.
330  * Otherwise an error is returned due to ongoing or failed
331  * initialization etc.
332  */
333 static inline int strong_try_module_get(struct module *mod)
334 {
335         BUG_ON(mod && mod->state == MODULE_STATE_UNFORMED);
336         if (mod && mod->state == MODULE_STATE_COMING)
337                 return -EBUSY;
338         if (try_module_get(mod))
339                 return 0;
340         else
341                 return -ENOENT;
342 }
343
344 static inline void add_taint_module(struct module *mod, unsigned flag,
345                                     enum lockdep_ok lockdep_ok)
346 {
347         add_taint(flag, lockdep_ok);
348         set_bit(flag, &mod->taints);
349 }
350
351 /*
352  * A thread that wants to hold a reference to a module only while it
353  * is running can call this to safely exit.  nfsd and lockd use this.
354  */
355 void __noreturn __module_put_and_exit(struct module *mod, long code)
356 {
357         module_put(mod);
358         do_exit(code);
359 }
360 EXPORT_SYMBOL(__module_put_and_exit);
361
362 /* Find a module section: 0 means not found. */
363 static unsigned int find_sec(const struct load_info *info, const char *name)
364 {
365         unsigned int i;
366
367         for (i = 1; i < info->hdr->e_shnum; i++) {
368                 Elf_Shdr *shdr = &info->sechdrs[i];
369                 /* Alloc bit cleared means "ignore it." */
370                 if ((shdr->sh_flags & SHF_ALLOC)
371                     && strcmp(info->secstrings + shdr->sh_name, name) == 0)
372                         return i;
373         }
374         return 0;
375 }
376
377 /* Find a module section, or NULL. */
378 static void *section_addr(const struct load_info *info, const char *name)
379 {
380         /* Section 0 has sh_addr 0. */
381         return (void *)info->sechdrs[find_sec(info, name)].sh_addr;
382 }
383
384 /* Find a module section, or NULL.  Fill in number of "objects" in section. */
385 static void *section_objs(const struct load_info *info,
386                           const char *name,
387                           size_t object_size,
388                           unsigned int *num)
389 {
390         unsigned int sec = find_sec(info, name);
391
392         /* Section 0 has sh_addr 0 and sh_size 0. */
393         *num = info->sechdrs[sec].sh_size / object_size;
394         return (void *)info->sechdrs[sec].sh_addr;
395 }
396
397 /* Provided by the linker */
398 extern const struct kernel_symbol __start___ksymtab[];
399 extern const struct kernel_symbol __stop___ksymtab[];
400 extern const struct kernel_symbol __start___ksymtab_gpl[];
401 extern const struct kernel_symbol __stop___ksymtab_gpl[];
402 extern const struct kernel_symbol __start___ksymtab_gpl_future[];
403 extern const struct kernel_symbol __stop___ksymtab_gpl_future[];
404 extern const s32 __start___kcrctab[];
405 extern const s32 __start___kcrctab_gpl[];
406 extern const s32 __start___kcrctab_gpl_future[];
407 #ifdef CONFIG_UNUSED_SYMBOLS
408 extern const struct kernel_symbol __start___ksymtab_unused[];
409 extern const struct kernel_symbol __stop___ksymtab_unused[];
410 extern const struct kernel_symbol __start___ksymtab_unused_gpl[];
411 extern const struct kernel_symbol __stop___ksymtab_unused_gpl[];
412 extern const s32 __start___kcrctab_unused[];
413 extern const s32 __start___kcrctab_unused_gpl[];
414 #endif
415
416 #ifndef CONFIG_MODVERSIONS
417 #define symversion(base, idx) NULL
418 #else
419 #define symversion(base, idx) ((base != NULL) ? ((base) + (idx)) : NULL)
420 #endif
421
422 static bool each_symbol_in_section(const struct symsearch *arr,
423                                    unsigned int arrsize,
424                                    struct module *owner,
425                                    bool (*fn)(const struct symsearch *syms,
426                                               struct module *owner,
427                                               void *data),
428                                    void *data)
429 {
430         unsigned int j;
431
432         for (j = 0; j < arrsize; j++) {
433                 if (fn(&arr[j], owner, data))
434                         return true;
435         }
436
437         return false;
438 }
439
440 /* Returns true as soon as fn returns true, otherwise false. */
441 bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
442                                     struct module *owner,
443                                     void *data),
444                          void *data)
445 {
446         struct module *mod;
447         static const struct symsearch arr[] = {
448                 { __start___ksymtab, __stop___ksymtab, __start___kcrctab,
449                   NOT_GPL_ONLY, false },
450                 { __start___ksymtab_gpl, __stop___ksymtab_gpl,
451                   __start___kcrctab_gpl,
452                   GPL_ONLY, false },
453                 { __start___ksymtab_gpl_future, __stop___ksymtab_gpl_future,
454                   __start___kcrctab_gpl_future,
455                   WILL_BE_GPL_ONLY, false },
456 #ifdef CONFIG_UNUSED_SYMBOLS
457                 { __start___ksymtab_unused, __stop___ksymtab_unused,
458                   __start___kcrctab_unused,
459                   NOT_GPL_ONLY, true },
460                 { __start___ksymtab_unused_gpl, __stop___ksymtab_unused_gpl,
461                   __start___kcrctab_unused_gpl,
462                   GPL_ONLY, true },
463 #endif
464         };
465
466         module_assert_mutex_or_preempt();
467
468         if (each_symbol_in_section(arr, ARRAY_SIZE(arr), NULL, fn, data))
469                 return true;
470
471         list_for_each_entry_rcu(mod, &modules, list) {
472                 struct symsearch arr[] = {
473                         { mod->syms, mod->syms + mod->num_syms, mod->crcs,
474                           NOT_GPL_ONLY, false },
475                         { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms,
476                           mod->gpl_crcs,
477                           GPL_ONLY, false },
478                         { mod->gpl_future_syms,
479                           mod->gpl_future_syms + mod->num_gpl_future_syms,
480                           mod->gpl_future_crcs,
481                           WILL_BE_GPL_ONLY, false },
482 #ifdef CONFIG_UNUSED_SYMBOLS
483                         { mod->unused_syms,
484                           mod->unused_syms + mod->num_unused_syms,
485                           mod->unused_crcs,
486                           NOT_GPL_ONLY, true },
487                         { mod->unused_gpl_syms,
488                           mod->unused_gpl_syms + mod->num_unused_gpl_syms,
489                           mod->unused_gpl_crcs,
490                           GPL_ONLY, true },
491 #endif
492                 };
493
494                 if (mod->state == MODULE_STATE_UNFORMED)
495                         continue;
496
497                 if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data))
498                         return true;
499         }
500         return false;
501 }
502 EXPORT_SYMBOL_GPL(each_symbol_section);
503
504 struct find_symbol_arg {
505         /* Input */
506         const char *name;
507         bool gplok;
508         bool warn;
509
510         /* Output */
511         struct module *owner;
512         const s32 *crc;
513         const struct kernel_symbol *sym;
514 };
515
516 static bool check_symbol(const struct symsearch *syms,
517                                  struct module *owner,
518                                  unsigned int symnum, void *data)
519 {
520         struct find_symbol_arg *fsa = data;
521
522         if (!fsa->gplok) {
523                 if (syms->licence == GPL_ONLY)
524                         return false;
525                 if (syms->licence == WILL_BE_GPL_ONLY && fsa->warn) {
526                         pr_warn("Symbol %s is being used by a non-GPL module, "
527                                 "which will not be allowed in the future\n",
528                                 fsa->name);
529                 }
530         }
531
532 #ifdef CONFIG_UNUSED_SYMBOLS
533         if (syms->unused && fsa->warn) {
534                 pr_warn("Symbol %s is marked as UNUSED, however this module is "
535                         "using it.\n", fsa->name);
536                 pr_warn("This symbol will go away in the future.\n");
537                 pr_warn("Please evaluate if this is the right api to use and "
538                         "if it really is, submit a report to the linux kernel "
539                         "mailing list together with submitting your code for "
540                         "inclusion.\n");
541         }
542 #endif
543
544         fsa->owner = owner;
545         fsa->crc = symversion(syms->crcs, symnum);
546         fsa->sym = &syms->start[symnum];
547         return true;
548 }
549
550 static int cmp_name(const void *va, const void *vb)
551 {
552         const char *a;
553         const struct kernel_symbol *b;
554         a = va; b = vb;
555         return strcmp(a, b->name);
556 }
557
558 static bool find_symbol_in_section(const struct symsearch *syms,
559                                    struct module *owner,
560                                    void *data)
561 {
562         struct find_symbol_arg *fsa = data;
563         struct kernel_symbol *sym;
564
565         sym = bsearch(fsa->name, syms->start, syms->stop - syms->start,
566                         sizeof(struct kernel_symbol), cmp_name);
567
568         if (sym != NULL && check_symbol(syms, owner, sym - syms->start, data))
569                 return true;
570
571         return false;
572 }
573
574 /* Find a symbol and return it, along with, (optional) crc and
575  * (optional) module which owns it.  Needs preempt disabled or module_mutex. */
576 const struct kernel_symbol *find_symbol(const char *name,
577                                         struct module **owner,
578                                         const s32 **crc,
579                                         bool gplok,
580                                         bool warn)
581 {
582         struct find_symbol_arg fsa;
583
584         fsa.name = name;
585         fsa.gplok = gplok;
586         fsa.warn = warn;
587
588         if (each_symbol_section(find_symbol_in_section, &fsa)) {
589                 if (owner)
590                         *owner = fsa.owner;
591                 if (crc)
592                         *crc = fsa.crc;
593                 return fsa.sym;
594         }
595
596         pr_debug("Failed to find symbol %s\n", name);
597         return NULL;
598 }
599 EXPORT_SYMBOL_GPL(find_symbol);
600
601 /*
602  * Search for module by name: must hold module_mutex (or preempt disabled
603  * for read-only access).
604  */
605 static struct module *find_module_all(const char *name, size_t len,
606                                       bool even_unformed)
607 {
608         struct module *mod;
609
610         module_assert_mutex_or_preempt();
611
612         list_for_each_entry_rcu(mod, &modules, list) {
613                 if (!even_unformed && mod->state == MODULE_STATE_UNFORMED)
614                         continue;
615                 if (strlen(mod->name) == len && !memcmp(mod->name, name, len))
616                         return mod;
617         }
618         return NULL;
619 }
620
621 struct module *find_module(const char *name)
622 {
623         module_assert_mutex();
624         return find_module_all(name, strlen(name), false);
625 }
626 EXPORT_SYMBOL_GPL(find_module);
627
628 #ifdef CONFIG_SMP
629
630 static inline void __percpu *mod_percpu(struct module *mod)
631 {
632         return mod->percpu;
633 }
634
635 static int percpu_modalloc(struct module *mod, struct load_info *info)
636 {
637         Elf_Shdr *pcpusec = &info->sechdrs[info->index.pcpu];
638         unsigned long align = pcpusec->sh_addralign;
639
640         if (!pcpusec->sh_size)
641                 return 0;
642
643         if (align > PAGE_SIZE) {
644                 pr_warn("%s: per-cpu alignment %li > %li\n",
645                         mod->name, align, PAGE_SIZE);
646                 align = PAGE_SIZE;
647         }
648
649         mod->percpu = __alloc_reserved_percpu(pcpusec->sh_size, align);
650         if (!mod->percpu) {
651                 pr_warn("%s: Could not allocate %lu bytes percpu data\n",
652                         mod->name, (unsigned long)pcpusec->sh_size);
653                 return -ENOMEM;
654         }
655         mod->percpu_size = pcpusec->sh_size;
656         return 0;
657 }
658
659 static void percpu_modfree(struct module *mod)
660 {
661         free_percpu(mod->percpu);
662 }
663
664 static unsigned int find_pcpusec(struct load_info *info)
665 {
666         return find_sec(info, ".data..percpu");
667 }
668
669 static void percpu_modcopy(struct module *mod,
670                            const void *from, unsigned long size)
671 {
672         int cpu;
673
674         for_each_possible_cpu(cpu)
675                 memcpy(per_cpu_ptr(mod->percpu, cpu), from, size);
676 }
677
678 bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr)
679 {
680         struct module *mod;
681         unsigned int cpu;
682
683         preempt_disable();
684
685         list_for_each_entry_rcu(mod, &modules, list) {
686                 if (mod->state == MODULE_STATE_UNFORMED)
687                         continue;
688                 if (!mod->percpu_size)
689                         continue;
690                 for_each_possible_cpu(cpu) {
691                         void *start = per_cpu_ptr(mod->percpu, cpu);
692                         void *va = (void *)addr;
693
694                         if (va >= start && va < start + mod->percpu_size) {
695                                 if (can_addr) {
696                                         *can_addr = (unsigned long) (va - start);
697                                         *can_addr += (unsigned long)
698                                                 per_cpu_ptr(mod->percpu,
699                                                             get_boot_cpu_id());
700                                 }
701                                 preempt_enable();
702                                 return true;
703                         }
704                 }
705         }
706
707         preempt_enable();
708         return false;
709 }
710
711 /**
712  * is_module_percpu_address - test whether address is from module static percpu
713  * @addr: address to test
714  *
715  * Test whether @addr belongs to module static percpu area.
716  *
717  * RETURNS:
718  * %true if @addr is from module static percpu area
719  */
720 bool is_module_percpu_address(unsigned long addr)
721 {
722         return __is_module_percpu_address(addr, NULL);
723 }
724
725 #else /* ... !CONFIG_SMP */
726
727 static inline void __percpu *mod_percpu(struct module *mod)
728 {
729         return NULL;
730 }
731 static int percpu_modalloc(struct module *mod, struct load_info *info)
732 {
733         /* UP modules shouldn't have this section: ENOMEM isn't quite right */
734         if (info->sechdrs[info->index.pcpu].sh_size != 0)
735                 return -ENOMEM;
736         return 0;
737 }
738 static inline void percpu_modfree(struct module *mod)
739 {
740 }
741 static unsigned int find_pcpusec(struct load_info *info)
742 {
743         return 0;
744 }
745 static inline void percpu_modcopy(struct module *mod,
746                                   const void *from, unsigned long size)
747 {
748         /* pcpusec should be 0, and size of that section should be 0. */
749         BUG_ON(size != 0);
750 }
751 bool is_module_percpu_address(unsigned long addr)
752 {
753         return false;
754 }
755
756 bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr)
757 {
758         return false;
759 }
760
761 #endif /* CONFIG_SMP */
762
763 #define MODINFO_ATTR(field)     \
764 static void setup_modinfo_##field(struct module *mod, const char *s)  \
765 {                                                                     \
766         mod->field = kstrdup(s, GFP_KERNEL);                          \
767 }                                                                     \
768 static ssize_t show_modinfo_##field(struct module_attribute *mattr,   \
769                         struct module_kobject *mk, char *buffer)      \
770 {                                                                     \
771         return scnprintf(buffer, PAGE_SIZE, "%s\n", mk->mod->field);  \
772 }                                                                     \
773 static int modinfo_##field##_exists(struct module *mod)               \
774 {                                                                     \
775         return mod->field != NULL;                                    \
776 }                                                                     \
777 static void free_modinfo_##field(struct module *mod)                  \
778 {                                                                     \
779         kfree(mod->field);                                            \
780         mod->field = NULL;                                            \
781 }                                                                     \
782 static struct module_attribute modinfo_##field = {                    \
783         .attr = { .name = __stringify(field), .mode = 0444 },         \
784         .show = show_modinfo_##field,                                 \
785         .setup = setup_modinfo_##field,                               \
786         .test = modinfo_##field##_exists,                             \
787         .free = free_modinfo_##field,                                 \
788 };
789
790 MODINFO_ATTR(version);
791 MODINFO_ATTR(srcversion);
792
793 static char last_unloaded_module[MODULE_NAME_LEN+1];
794
795 #ifdef CONFIG_MODULE_UNLOAD
796
797 EXPORT_TRACEPOINT_SYMBOL(module_get);
798
799 /* MODULE_REF_BASE is the base reference count by kmodule loader. */
800 #define MODULE_REF_BASE 1
801
802 /* Init the unload section of the module. */
803 static int module_unload_init(struct module *mod)
804 {
805         /*
806          * Initialize reference counter to MODULE_REF_BASE.
807          * refcnt == 0 means module is going.
808          */
809         atomic_set(&mod->refcnt, MODULE_REF_BASE);
810
811         INIT_LIST_HEAD(&mod->source_list);
812         INIT_LIST_HEAD(&mod->target_list);
813
814         /* Hold reference count during initialization. */
815         atomic_inc(&mod->refcnt);
816
817         return 0;
818 }
819
820 /* Does a already use b? */
821 static int already_uses(struct module *a, struct module *b)
822 {
823         struct module_use *use;
824
825         list_for_each_entry(use, &b->source_list, source_list) {
826                 if (use->source == a) {
827                         pr_debug("%s uses %s!\n", a->name, b->name);
828                         return 1;
829                 }
830         }
831         pr_debug("%s does not use %s!\n", a->name, b->name);
832         return 0;
833 }
834
835 /*
836  * Module a uses b
837  *  - we add 'a' as a "source", 'b' as a "target" of module use
838  *  - the module_use is added to the list of 'b' sources (so
839  *    'b' can walk the list to see who sourced them), and of 'a'
840  *    targets (so 'a' can see what modules it targets).
841  */
842 static int add_module_usage(struct module *a, struct module *b)
843 {
844         struct module_use *use;
845
846         pr_debug("Allocating new usage for %s.\n", a->name);
847         use = kmalloc(sizeof(*use), GFP_ATOMIC);
848         if (!use)
849                 return -ENOMEM;
850
851         use->source = a;
852         use->target = b;
853         list_add(&use->source_list, &b->source_list);
854         list_add(&use->target_list, &a->target_list);
855         return 0;
856 }
857
858 /* Module a uses b: caller needs module_mutex() */
859 int ref_module(struct module *a, struct module *b)
860 {
861         int err;
862
863         if (b == NULL || already_uses(a, b))
864                 return 0;
865
866         /* If module isn't available, we fail. */
867         err = strong_try_module_get(b);
868         if (err)
869                 return err;
870
871         err = add_module_usage(a, b);
872         if (err) {
873                 module_put(b);
874                 return err;
875         }
876         return 0;
877 }
878 EXPORT_SYMBOL_GPL(ref_module);
879
880 /* Clear the unload stuff of the module. */
881 static void module_unload_free(struct module *mod)
882 {
883         struct module_use *use, *tmp;
884
885         mutex_lock(&module_mutex);
886         list_for_each_entry_safe(use, tmp, &mod->target_list, target_list) {
887                 struct module *i = use->target;
888                 pr_debug("%s unusing %s\n", mod->name, i->name);
889                 module_put(i);
890                 list_del(&use->source_list);
891                 list_del(&use->target_list);
892                 kfree(use);
893         }
894         mutex_unlock(&module_mutex);
895 }
896
897 #ifdef CONFIG_MODULE_FORCE_UNLOAD
898 static inline int try_force_unload(unsigned int flags)
899 {
900         int ret = (flags & O_TRUNC);
901         if (ret)
902                 add_taint(TAINT_FORCED_RMMOD, LOCKDEP_NOW_UNRELIABLE);
903         return ret;
904 }
905 #else
906 static inline int try_force_unload(unsigned int flags)
907 {
908         return 0;
909 }
910 #endif /* CONFIG_MODULE_FORCE_UNLOAD */
911
912 /* Try to release refcount of module, 0 means success. */
913 static int try_release_module_ref(struct module *mod)
914 {
915         int ret;
916
917         /* Try to decrement refcnt which we set at loading */
918         ret = atomic_sub_return(MODULE_REF_BASE, &mod->refcnt);
919         BUG_ON(ret < 0);
920         if (ret)
921                 /* Someone can put this right now, recover with checking */
922                 ret = atomic_add_unless(&mod->refcnt, MODULE_REF_BASE, 0);
923
924         return ret;
925 }
926
927 static int try_stop_module(struct module *mod, int flags, int *forced)
928 {
929         /* If it's not unused, quit unless we're forcing. */
930         if (try_release_module_ref(mod) != 0) {
931                 *forced = try_force_unload(flags);
932                 if (!(*forced))
933                         return -EWOULDBLOCK;
934         }
935
936         /* Mark it as dying. */
937         mod->state = MODULE_STATE_GOING;
938
939         return 0;
940 }
941
942 /**
943  * module_refcount - return the refcount or -1 if unloading
944  *
945  * @mod:        the module we're checking
946  *
947  * Returns:
948  *      -1 if the module is in the process of unloading
949  *      otherwise the number of references in the kernel to the module
950  */
951 int module_refcount(struct module *mod)
952 {
953         return atomic_read(&mod->refcnt) - MODULE_REF_BASE;
954 }
955 EXPORT_SYMBOL(module_refcount);
956
957 /* This exists whether we can unload or not */
958 static void free_module(struct module *mod);
959
960 SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
961                 unsigned int, flags)
962 {
963         struct module *mod;
964         char name[MODULE_NAME_LEN];
965         int ret, forced = 0;
966
967         if (!capable(CAP_SYS_MODULE) || modules_disabled)
968                 return -EPERM;
969
970         if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0)
971                 return -EFAULT;
972         name[MODULE_NAME_LEN-1] = '\0';
973
974         audit_log_kern_module(name);
975
976         if (mutex_lock_interruptible(&module_mutex) != 0)
977                 return -EINTR;
978
979         mod = find_module(name);
980         if (!mod) {
981                 ret = -ENOENT;
982                 goto out;
983         }
984
985         if (!list_empty(&mod->source_list)) {
986                 /* Other modules depend on us: get rid of them first. */
987                 ret = -EWOULDBLOCK;
988                 goto out;
989         }
990
991         /* Doing init or already dying? */
992         if (mod->state != MODULE_STATE_LIVE) {
993                 /* FIXME: if (force), slam module count damn the torpedoes */
994                 pr_debug("%s already dying\n", mod->name);
995                 ret = -EBUSY;
996                 goto out;
997         }
998
999         /* If it has an init func, it must have an exit func to unload */
1000         if (mod->init && !mod->exit) {
1001                 forced = try_force_unload(flags);
1002                 if (!forced) {
1003                         /* This module can't be removed */
1004                         ret = -EBUSY;
1005                         goto out;
1006                 }
1007         }
1008
1009         /* Stop the machine so refcounts can't move and disable module. */
1010         ret = try_stop_module(mod, flags, &forced);
1011         if (ret != 0)
1012                 goto out;
1013
1014         mutex_unlock(&module_mutex);
1015         /* Final destruction now no one is using it. */
1016         if (mod->exit != NULL)
1017                 mod->exit();
1018         blocking_notifier_call_chain(&module_notify_list,
1019                                      MODULE_STATE_GOING, mod);
1020         klp_module_going(mod);
1021         ftrace_release_mod(mod);
1022
1023         async_synchronize_full();
1024
1025         /* Store the name of the last unloaded module for diagnostic purposes */
1026         strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module));
1027
1028         free_module(mod);
1029         return 0;
1030 out:
1031         mutex_unlock(&module_mutex);
1032         return ret;
1033 }
1034
1035 static inline void print_unload_info(struct seq_file *m, struct module *mod)
1036 {
1037         struct module_use *use;
1038         int printed_something = 0;
1039
1040         seq_printf(m, " %i ", module_refcount(mod));
1041
1042         /*
1043          * Always include a trailing , so userspace can differentiate
1044          * between this and the old multi-field proc format.
1045          */
1046         list_for_each_entry(use, &mod->source_list, source_list) {
1047                 printed_something = 1;
1048                 seq_printf(m, "%s,", use->source->name);
1049         }
1050
1051         if (mod->init != NULL && mod->exit == NULL) {
1052                 printed_something = 1;
1053                 seq_puts(m, "[permanent],");
1054         }
1055
1056         if (!printed_something)
1057                 seq_puts(m, "-");
1058 }
1059
1060 void __symbol_put(const char *symbol)
1061 {
1062         struct module *owner;
1063
1064         preempt_disable();
1065         if (!find_symbol(symbol, &owner, NULL, true, false))
1066                 BUG();
1067         module_put(owner);
1068         preempt_enable();
1069 }
1070 EXPORT_SYMBOL(__symbol_put);
1071
1072 /* Note this assumes addr is a function, which it currently always is. */
1073 void symbol_put_addr(void *addr)
1074 {
1075         struct module *modaddr;
1076         unsigned long a = (unsigned long)dereference_function_descriptor(addr);
1077
1078         if (core_kernel_text(a))
1079                 return;
1080
1081         /*
1082          * Even though we hold a reference on the module; we still need to
1083          * disable preemption in order to safely traverse the data structure.
1084          */
1085         preempt_disable();
1086         modaddr = __module_text_address(a);
1087         BUG_ON(!modaddr);
1088         module_put(modaddr);
1089         preempt_enable();
1090 }
1091 EXPORT_SYMBOL_GPL(symbol_put_addr);
1092
1093 static ssize_t show_refcnt(struct module_attribute *mattr,
1094                            struct module_kobject *mk, char *buffer)
1095 {
1096         return sprintf(buffer, "%i\n", module_refcount(mk->mod));
1097 }
1098
1099 static struct module_attribute modinfo_refcnt =
1100         __ATTR(refcnt, 0444, show_refcnt, NULL);
1101
1102 void __module_get(struct module *module)
1103 {
1104         if (module) {
1105                 preempt_disable();
1106                 atomic_inc(&module->refcnt);
1107                 trace_module_get(module, _RET_IP_);
1108                 preempt_enable();
1109         }
1110 }
1111 EXPORT_SYMBOL(__module_get);
1112
1113 bool try_module_get(struct module *module)
1114 {
1115         bool ret = true;
1116
1117         if (module) {
1118                 preempt_disable();
1119                 /* Note: here, we can fail to get a reference */
1120                 if (likely(module_is_live(module) &&
1121                            atomic_inc_not_zero(&module->refcnt) != 0))
1122                         trace_module_get(module, _RET_IP_);
1123                 else
1124                         ret = false;
1125
1126                 preempt_enable();
1127         }
1128         return ret;
1129 }
1130 EXPORT_SYMBOL(try_module_get);
1131
1132 void module_put(struct module *module)
1133 {
1134         int ret;
1135
1136         if (module) {
1137                 preempt_disable();
1138                 ret = atomic_dec_if_positive(&module->refcnt);
1139                 WARN_ON(ret < 0);       /* Failed to put refcount */
1140                 trace_module_put(module, _RET_IP_);
1141                 preempt_enable();
1142         }
1143 }
1144 EXPORT_SYMBOL(module_put);
1145
1146 #else /* !CONFIG_MODULE_UNLOAD */
1147 static inline void print_unload_info(struct seq_file *m, struct module *mod)
1148 {
1149         /* We don't know the usage count, or what modules are using. */
1150         seq_puts(m, " - -");
1151 }
1152
1153 static inline void module_unload_free(struct module *mod)
1154 {
1155 }
1156
1157 int ref_module(struct module *a, struct module *b)
1158 {
1159         return strong_try_module_get(b);
1160 }
1161 EXPORT_SYMBOL_GPL(ref_module);
1162
1163 static inline int module_unload_init(struct module *mod)
1164 {
1165         return 0;
1166 }
1167 #endif /* CONFIG_MODULE_UNLOAD */
1168
1169 static size_t module_flags_taint(struct module *mod, char *buf)
1170 {
1171         size_t l = 0;
1172         int i;
1173
1174         for (i = 0; i < TAINT_FLAGS_COUNT; i++) {
1175                 if (taint_flags[i].module && test_bit(i, &mod->taints))
1176                         buf[l++] = taint_flags[i].c_true;
1177         }
1178
1179         return l;
1180 }
1181
1182 static ssize_t show_initstate(struct module_attribute *mattr,
1183                               struct module_kobject *mk, char *buffer)
1184 {
1185         const char *state = "unknown";
1186
1187         switch (mk->mod->state) {
1188         case MODULE_STATE_LIVE:
1189                 state = "live";
1190                 break;
1191         case MODULE_STATE_COMING:
1192                 state = "coming";
1193                 break;
1194         case MODULE_STATE_GOING:
1195                 state = "going";
1196                 break;
1197         default:
1198                 BUG();
1199         }
1200         return sprintf(buffer, "%s\n", state);
1201 }
1202
1203 static struct module_attribute modinfo_initstate =
1204         __ATTR(initstate, 0444, show_initstate, NULL);
1205
1206 static ssize_t store_uevent(struct module_attribute *mattr,
1207                             struct module_kobject *mk,
1208                             const char *buffer, size_t count)
1209 {
1210         kobject_synth_uevent(&mk->kobj, buffer, count);
1211         return count;
1212 }
1213
1214 struct module_attribute module_uevent =
1215         __ATTR(uevent, 0200, NULL, store_uevent);
1216
1217 static ssize_t show_coresize(struct module_attribute *mattr,
1218                              struct module_kobject *mk, char *buffer)
1219 {
1220         return sprintf(buffer, "%u\n", mk->mod->core_layout.size);
1221 }
1222
1223 static struct module_attribute modinfo_coresize =
1224         __ATTR(coresize, 0444, show_coresize, NULL);
1225
1226 static ssize_t show_initsize(struct module_attribute *mattr,
1227                              struct module_kobject *mk, char *buffer)
1228 {
1229         return sprintf(buffer, "%u\n", mk->mod->init_layout.size);
1230 }
1231
1232 static struct module_attribute modinfo_initsize =
1233         __ATTR(initsize, 0444, show_initsize, NULL);
1234
1235 static ssize_t show_taint(struct module_attribute *mattr,
1236                           struct module_kobject *mk, char *buffer)
1237 {
1238         size_t l;
1239
1240         l = module_flags_taint(mk->mod, buffer);
1241         buffer[l++] = '\n';
1242         return l;
1243 }
1244
1245 static struct module_attribute modinfo_taint =
1246         __ATTR(taint, 0444, show_taint, NULL);
1247
1248 static struct module_attribute *modinfo_attrs[] = {
1249         &module_uevent,
1250         &modinfo_version,
1251         &modinfo_srcversion,
1252         &modinfo_initstate,
1253         &modinfo_coresize,
1254         &modinfo_initsize,
1255         &modinfo_taint,
1256 #ifdef CONFIG_MODULE_UNLOAD
1257         &modinfo_refcnt,
1258 #endif
1259         NULL,
1260 };
1261
1262 static const char vermagic[] = VERMAGIC_STRING;
1263
1264 static int try_to_force_load(struct module *mod, const char *reason)
1265 {
1266 #ifdef CONFIG_MODULE_FORCE_LOAD
1267         if (!test_taint(TAINT_FORCED_MODULE))
1268                 pr_warn("%s: %s: kernel tainted.\n", mod->name, reason);
1269         add_taint_module(mod, TAINT_FORCED_MODULE, LOCKDEP_NOW_UNRELIABLE);
1270         return 0;
1271 #else
1272         return -ENOEXEC;
1273 #endif
1274 }
1275
1276 #ifdef CONFIG_MODVERSIONS
1277
1278 static u32 resolve_rel_crc(const s32 *crc)
1279 {
1280         return *(u32 *)((void *)crc + *crc);
1281 }
1282
1283 static int check_version(const struct load_info *info,
1284                          const char *symname,
1285                          struct module *mod,
1286                          const s32 *crc)
1287 {
1288         Elf_Shdr *sechdrs = info->sechdrs;
1289         unsigned int versindex = info->index.vers;
1290         unsigned int i, num_versions;
1291         struct modversion_info *versions;
1292
1293         /* Exporting module didn't supply crcs?  OK, we're already tainted. */
1294         if (!crc)
1295                 return 1;
1296
1297         /* No versions at all?  modprobe --force does this. */
1298         if (versindex == 0)
1299                 return try_to_force_load(mod, symname) == 0;
1300
1301         versions = (void *) sechdrs[versindex].sh_addr;
1302         num_versions = sechdrs[versindex].sh_size
1303                 / sizeof(struct modversion_info);
1304
1305         for (i = 0; i < num_versions; i++) {
1306                 u32 crcval;
1307
1308                 if (strcmp(versions[i].name, symname) != 0)
1309                         continue;
1310
1311                 if (IS_ENABLED(CONFIG_MODULE_REL_CRCS))
1312                         crcval = resolve_rel_crc(crc);
1313                 else
1314                         crcval = *crc;
1315                 if (versions[i].crc == crcval)
1316                         return 1;
1317                 pr_debug("Found checksum %X vs module %lX\n",
1318                          crcval, versions[i].crc);
1319                 goto bad_version;
1320         }
1321
1322         /* Broken toolchain. Warn once, then let it go.. */
1323         pr_warn_once("%s: no symbol version for %s\n", info->name, symname);
1324         return 1;
1325
1326 bad_version:
1327         pr_warn("%s: disagrees about version of symbol %s\n",
1328                info->name, symname);
1329         return 0;
1330 }
1331
1332 static inline int check_modstruct_version(const struct load_info *info,
1333                                           struct module *mod)
1334 {
1335         const s32 *crc;
1336
1337         /*
1338          * Since this should be found in kernel (which can't be removed), no
1339          * locking is necessary -- use preempt_disable() to placate lockdep.
1340          */
1341         preempt_disable();
1342         if (!find_symbol(VMLINUX_SYMBOL_STR(module_layout), NULL,
1343                          &crc, true, false)) {
1344                 preempt_enable();
1345                 BUG();
1346         }
1347         preempt_enable();
1348         return check_version(info, VMLINUX_SYMBOL_STR(module_layout),
1349                              mod, crc);
1350 }
1351
1352 /* First part is kernel version, which we ignore if module has crcs. */
1353 static inline int same_magic(const char *amagic, const char *bmagic,
1354                              bool has_crcs)
1355 {
1356         if (has_crcs) {
1357                 amagic += strcspn(amagic, " ");
1358                 bmagic += strcspn(bmagic, " ");
1359         }
1360         return strcmp(amagic, bmagic) == 0;
1361 }
1362 #else
1363 static inline int check_version(const struct load_info *info,
1364                                 const char *symname,
1365                                 struct module *mod,
1366                                 const s32 *crc)
1367 {
1368         return 1;
1369 }
1370
1371 static inline int check_modstruct_version(const struct load_info *info,
1372                                           struct module *mod)
1373 {
1374         return 1;
1375 }
1376
1377 static inline int same_magic(const char *amagic, const char *bmagic,
1378                              bool has_crcs)
1379 {
1380         return strcmp(amagic, bmagic) == 0;
1381 }
1382 #endif /* CONFIG_MODVERSIONS */
1383
1384 /* Resolve a symbol for this module.  I.e. if we find one, record usage. */
1385 static const struct kernel_symbol *resolve_symbol(struct module *mod,
1386                                                   const struct load_info *info,
1387                                                   const char *name,
1388                                                   char ownername[])
1389 {
1390         struct module *owner;
1391         const struct kernel_symbol *sym;
1392         const s32 *crc;
1393         int err;
1394
1395         /*
1396          * The module_mutex should not be a heavily contended lock;
1397          * if we get the occasional sleep here, we'll go an extra iteration
1398          * in the wait_event_interruptible(), which is harmless.
1399          */
1400         sched_annotate_sleep();
1401         mutex_lock(&module_mutex);
1402         sym = find_symbol(name, &owner, &crc,
1403                           !(mod->taints & (1 << TAINT_PROPRIETARY_MODULE)), true);
1404         if (!sym)
1405                 goto unlock;
1406
1407         if (!check_version(info, name, mod, crc)) {
1408                 sym = ERR_PTR(-EINVAL);
1409                 goto getname;
1410         }
1411
1412         err = ref_module(mod, owner);
1413         if (err) {
1414                 sym = ERR_PTR(err);
1415                 goto getname;
1416         }
1417
1418 getname:
1419         /* We must make copy under the lock if we failed to get ref. */
1420         strncpy(ownername, module_name(owner), MODULE_NAME_LEN);
1421 unlock:
1422         mutex_unlock(&module_mutex);
1423         return sym;
1424 }
1425
1426 static const struct kernel_symbol *
1427 resolve_symbol_wait(struct module *mod,
1428                     const struct load_info *info,
1429                     const char *name)
1430 {
1431         const struct kernel_symbol *ksym;
1432         char owner[MODULE_NAME_LEN];
1433
1434         if (wait_event_interruptible_timeout(module_wq,
1435                         !IS_ERR(ksym = resolve_symbol(mod, info, name, owner))
1436                         || PTR_ERR(ksym) != -EBUSY,
1437                                              30 * HZ) <= 0) {
1438                 pr_warn("%s: gave up waiting for init of module %s.\n",
1439                         mod->name, owner);
1440         }
1441         return ksym;
1442 }
1443
1444 /*
1445  * /sys/module/foo/sections stuff
1446  * J. Corbet <corbet@lwn.net>
1447  */
1448 #ifdef CONFIG_SYSFS
1449
1450 #ifdef CONFIG_KALLSYMS
1451 static inline bool sect_empty(const Elf_Shdr *sect)
1452 {
1453         return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
1454 }
1455
1456 struct module_sect_attr {
1457         struct module_attribute mattr;
1458         char *name;
1459         unsigned long address;
1460 };
1461
1462 struct module_sect_attrs {
1463         struct attribute_group grp;
1464         unsigned int nsections;
1465         struct module_sect_attr attrs[0];
1466 };
1467
1468 static ssize_t module_sect_show(struct module_attribute *mattr,
1469                                 struct module_kobject *mk, char *buf)
1470 {
1471         struct module_sect_attr *sattr =
1472                 container_of(mattr, struct module_sect_attr, mattr);
1473         return sprintf(buf, "0x%pK\n", (void *)sattr->address);
1474 }
1475
1476 static void free_sect_attrs(struct module_sect_attrs *sect_attrs)
1477 {
1478         unsigned int section;
1479
1480         for (section = 0; section < sect_attrs->nsections; section++)
1481                 kfree(sect_attrs->attrs[section].name);
1482         kfree(sect_attrs);
1483 }
1484
1485 static void add_sect_attrs(struct module *mod, const struct load_info *info)
1486 {
1487         unsigned int nloaded = 0, i, size[2];
1488         struct module_sect_attrs *sect_attrs;
1489         struct module_sect_attr *sattr;
1490         struct attribute **gattr;
1491
1492         /* Count loaded sections and allocate structures */
1493         for (i = 0; i < info->hdr->e_shnum; i++)
1494                 if (!sect_empty(&info->sechdrs[i]))
1495                         nloaded++;
1496         size[0] = ALIGN(sizeof(*sect_attrs)
1497                         + nloaded * sizeof(sect_attrs->attrs[0]),
1498                         sizeof(sect_attrs->grp.attrs[0]));
1499         size[1] = (nloaded + 1) * sizeof(sect_attrs->grp.attrs[0]);
1500         sect_attrs = kzalloc(size[0] + size[1], GFP_KERNEL);
1501         if (sect_attrs == NULL)
1502                 return;
1503
1504         /* Setup section attributes. */
1505         sect_attrs->grp.name = "sections";
1506         sect_attrs->grp.attrs = (void *)sect_attrs + size[0];
1507
1508         sect_attrs->nsections = 0;
1509         sattr = &sect_attrs->attrs[0];
1510         gattr = &sect_attrs->grp.attrs[0];
1511         for (i = 0; i < info->hdr->e_shnum; i++) {
1512                 Elf_Shdr *sec = &info->sechdrs[i];
1513                 if (sect_empty(sec))
1514                         continue;
1515                 sattr->address = sec->sh_addr;
1516                 sattr->name = kstrdup(info->secstrings + sec->sh_name,
1517                                         GFP_KERNEL);
1518                 if (sattr->name == NULL)
1519                         goto out;
1520                 sect_attrs->nsections++;
1521                 sysfs_attr_init(&sattr->mattr.attr);
1522                 sattr->mattr.show = module_sect_show;
1523                 sattr->mattr.store = NULL;
1524                 sattr->mattr.attr.name = sattr->name;
1525                 sattr->mattr.attr.mode = S_IRUSR;
1526                 *(gattr++) = &(sattr++)->mattr.attr;
1527         }
1528         *gattr = NULL;
1529
1530         if (sysfs_create_group(&mod->mkobj.kobj, &sect_attrs->grp))
1531                 goto out;
1532
1533         mod->sect_attrs = sect_attrs;
1534         return;
1535   out:
1536         free_sect_attrs(sect_attrs);
1537 }
1538
1539 static void remove_sect_attrs(struct module *mod)
1540 {
1541         if (mod->sect_attrs) {
1542                 sysfs_remove_group(&mod->mkobj.kobj,
1543                                    &mod->sect_attrs->grp);
1544                 /* We are positive that no one is using any sect attrs
1545                  * at this point.  Deallocate immediately. */
1546                 free_sect_attrs(mod->sect_attrs);
1547                 mod->sect_attrs = NULL;
1548         }
1549 }
1550
1551 /*
1552  * /sys/module/foo/notes/.section.name gives contents of SHT_NOTE sections.
1553  */
1554
1555 struct module_notes_attrs {
1556         struct kobject *dir;
1557         unsigned int notes;
1558         struct bin_attribute attrs[0];
1559 };
1560
1561 static ssize_t module_notes_read(struct file *filp, struct kobject *kobj,
1562                                  struct bin_attribute *bin_attr,
1563                                  char *buf, loff_t pos, size_t count)
1564 {
1565         /*
1566          * The caller checked the pos and count against our size.
1567          */
1568         memcpy(buf, bin_attr->private + pos, count);
1569         return count;
1570 }
1571
1572 static void free_notes_attrs(struct module_notes_attrs *notes_attrs,
1573                              unsigned int i)
1574 {
1575         if (notes_attrs->dir) {
1576                 while (i-- > 0)
1577                         sysfs_remove_bin_file(notes_attrs->dir,
1578                                               &notes_attrs->attrs[i]);
1579                 kobject_put(notes_attrs->dir);
1580         }
1581         kfree(notes_attrs);
1582 }
1583
1584 static void add_notes_attrs(struct module *mod, const struct load_info *info)
1585 {
1586         unsigned int notes, loaded, i;
1587         struct module_notes_attrs *notes_attrs;
1588         struct bin_attribute *nattr;
1589
1590         /* failed to create section attributes, so can't create notes */
1591         if (!mod->sect_attrs)
1592                 return;
1593
1594         /* Count notes sections and allocate structures.  */
1595         notes = 0;
1596         for (i = 0; i < info->hdr->e_shnum; i++)
1597                 if (!sect_empty(&info->sechdrs[i]) &&
1598                     (info->sechdrs[i].sh_type == SHT_NOTE))
1599                         ++notes;
1600
1601         if (notes == 0)
1602                 return;
1603
1604         notes_attrs = kzalloc(sizeof(*notes_attrs)
1605                               + notes * sizeof(notes_attrs->attrs[0]),
1606                               GFP_KERNEL);
1607         if (notes_attrs == NULL)
1608                 return;
1609
1610         notes_attrs->notes = notes;
1611         nattr = &notes_attrs->attrs[0];
1612         for (loaded = i = 0; i < info->hdr->e_shnum; ++i) {
1613                 if (sect_empty(&info->sechdrs[i]))
1614                         continue;
1615                 if (info->sechdrs[i].sh_type == SHT_NOTE) {
1616                         sysfs_bin_attr_init(nattr);
1617                         nattr->attr.name = mod->sect_attrs->attrs[loaded].name;
1618                         nattr->attr.mode = S_IRUGO;
1619                         nattr->size = info->sechdrs[i].sh_size;
1620                         nattr->private = (void *) info->sechdrs[i].sh_addr;
1621                         nattr->read = module_notes_read;
1622                         ++nattr;
1623                 }
1624                 ++loaded;
1625         }
1626
1627         notes_attrs->dir = kobject_create_and_add("notes", &mod->mkobj.kobj);
1628         if (!notes_attrs->dir)
1629                 goto out;
1630
1631         for (i = 0; i < notes; ++i)
1632                 if (sysfs_create_bin_file(notes_attrs->dir,
1633                                           &notes_attrs->attrs[i]))
1634                         goto out;
1635
1636         mod->notes_attrs = notes_attrs;
1637         return;
1638
1639   out:
1640         free_notes_attrs(notes_attrs, i);
1641 }
1642
1643 static void remove_notes_attrs(struct module *mod)
1644 {
1645         if (mod->notes_attrs)
1646                 free_notes_attrs(mod->notes_attrs, mod->notes_attrs->notes);
1647 }
1648
1649 #else
1650
1651 static inline void add_sect_attrs(struct module *mod,
1652                                   const struct load_info *info)
1653 {
1654 }
1655
1656 static inline void remove_sect_attrs(struct module *mod)
1657 {
1658 }
1659
1660 static inline void add_notes_attrs(struct module *mod,
1661                                    const struct load_info *info)
1662 {
1663 }
1664
1665 static inline void remove_notes_attrs(struct module *mod)
1666 {
1667 }
1668 #endif /* CONFIG_KALLSYMS */
1669
1670 static void del_usage_links(struct module *mod)
1671 {
1672 #ifdef CONFIG_MODULE_UNLOAD
1673         struct module_use *use;
1674
1675         mutex_lock(&module_mutex);
1676         list_for_each_entry(use, &mod->target_list, target_list)
1677                 sysfs_remove_link(use->target->holders_dir, mod->name);
1678         mutex_unlock(&module_mutex);
1679 #endif
1680 }
1681
1682 static int add_usage_links(struct module *mod)
1683 {
1684         int ret = 0;
1685 #ifdef CONFIG_MODULE_UNLOAD
1686         struct module_use *use;
1687
1688         mutex_lock(&module_mutex);
1689         list_for_each_entry(use, &mod->target_list, target_list) {
1690                 ret = sysfs_create_link(use->target->holders_dir,
1691                                         &mod->mkobj.kobj, mod->name);
1692                 if (ret)
1693                         break;
1694         }
1695         mutex_unlock(&module_mutex);
1696         if (ret)
1697                 del_usage_links(mod);
1698 #endif
1699         return ret;
1700 }
1701
1702 static int module_add_modinfo_attrs(struct module *mod)
1703 {
1704         struct module_attribute *attr;
1705         struct module_attribute *temp_attr;
1706         int error = 0;
1707         int i;
1708
1709         mod->modinfo_attrs = kzalloc((sizeof(struct module_attribute) *
1710                                         (ARRAY_SIZE(modinfo_attrs) + 1)),
1711                                         GFP_KERNEL);
1712         if (!mod->modinfo_attrs)
1713                 return -ENOMEM;
1714
1715         temp_attr = mod->modinfo_attrs;
1716         for (i = 0; (attr = modinfo_attrs[i]) && !error; i++) {
1717                 if (!attr->test || attr->test(mod)) {
1718                         memcpy(temp_attr, attr, sizeof(*temp_attr));
1719                         sysfs_attr_init(&temp_attr->attr);
1720                         error = sysfs_create_file(&mod->mkobj.kobj,
1721                                         &temp_attr->attr);
1722                         ++temp_attr;
1723                 }
1724         }
1725         return error;
1726 }
1727
1728 static void module_remove_modinfo_attrs(struct module *mod)
1729 {
1730         struct module_attribute *attr;
1731         int i;
1732
1733         for (i = 0; (attr = &mod->modinfo_attrs[i]); i++) {
1734                 /* pick a field to test for end of list */
1735                 if (!attr->attr.name)
1736                         break;
1737                 sysfs_remove_file(&mod->mkobj.kobj, &attr->attr);
1738                 if (attr->free)
1739                         attr->free(mod);
1740         }
1741         kfree(mod->modinfo_attrs);
1742 }
1743
1744 static void mod_kobject_put(struct module *mod)
1745 {
1746         DECLARE_COMPLETION_ONSTACK(c);
1747         mod->mkobj.kobj_completion = &c;
1748         kobject_put(&mod->mkobj.kobj);
1749         wait_for_completion(&c);
1750 }
1751
1752 static int mod_sysfs_init(struct module *mod)
1753 {
1754         int err;
1755         struct kobject *kobj;
1756
1757         if (!module_sysfs_initialized) {
1758                 pr_err("%s: module sysfs not initialized\n", mod->name);
1759                 err = -EINVAL;
1760                 goto out;
1761         }
1762
1763         kobj = kset_find_obj(module_kset, mod->name);
1764         if (kobj) {
1765                 pr_err("%s: module is already loaded\n", mod->name);
1766                 kobject_put(kobj);
1767                 err = -EINVAL;
1768                 goto out;
1769         }
1770
1771         mod->mkobj.mod = mod;
1772
1773         memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj));
1774         mod->mkobj.kobj.kset = module_kset;
1775         err = kobject_init_and_add(&mod->mkobj.kobj, &module_ktype, NULL,
1776                                    "%s", mod->name);
1777         if (err)
1778                 mod_kobject_put(mod);
1779
1780         /* delay uevent until full sysfs population */
1781 out:
1782         return err;
1783 }
1784
1785 static int mod_sysfs_setup(struct module *mod,
1786                            const struct load_info *info,
1787                            struct kernel_param *kparam,
1788                            unsigned int num_params)
1789 {
1790         int err;
1791
1792         err = mod_sysfs_init(mod);
1793         if (err)
1794                 goto out;
1795
1796         mod->holders_dir = kobject_create_and_add("holders", &mod->mkobj.kobj);
1797         if (!mod->holders_dir) {
1798                 err = -ENOMEM;
1799                 goto out_unreg;
1800         }
1801
1802         err = module_param_sysfs_setup(mod, kparam, num_params);
1803         if (err)
1804                 goto out_unreg_holders;
1805
1806         err = module_add_modinfo_attrs(mod);
1807         if (err)
1808                 goto out_unreg_param;
1809
1810         err = add_usage_links(mod);
1811         if (err)
1812                 goto out_unreg_modinfo_attrs;
1813
1814         add_sect_attrs(mod, info);
1815         add_notes_attrs(mod, info);
1816
1817         kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD);
1818         return 0;
1819
1820 out_unreg_modinfo_attrs:
1821         module_remove_modinfo_attrs(mod);
1822 out_unreg_param:
1823         module_param_sysfs_remove(mod);
1824 out_unreg_holders:
1825         kobject_put(mod->holders_dir);
1826 out_unreg:
1827         mod_kobject_put(mod);
1828 out:
1829         return err;
1830 }
1831
1832 static void mod_sysfs_fini(struct module *mod)
1833 {
1834         remove_notes_attrs(mod);
1835         remove_sect_attrs(mod);
1836         mod_kobject_put(mod);
1837 }
1838
1839 static void init_param_lock(struct module *mod)
1840 {
1841         mutex_init(&mod->param_lock);
1842 }
1843 #else /* !CONFIG_SYSFS */
1844
1845 static int mod_sysfs_setup(struct module *mod,
1846                            const struct load_info *info,
1847                            struct kernel_param *kparam,
1848                            unsigned int num_params)
1849 {
1850         return 0;
1851 }
1852
1853 static void mod_sysfs_fini(struct module *mod)
1854 {
1855 }
1856
1857 static void module_remove_modinfo_attrs(struct module *mod)
1858 {
1859 }
1860
1861 static void del_usage_links(struct module *mod)
1862 {
1863 }
1864
1865 static void init_param_lock(struct module *mod)
1866 {
1867 }
1868 #endif /* CONFIG_SYSFS */
1869
1870 static void mod_sysfs_teardown(struct module *mod)
1871 {
1872         del_usage_links(mod);
1873         module_remove_modinfo_attrs(mod);
1874         module_param_sysfs_remove(mod);
1875         kobject_put(mod->mkobj.drivers_dir);
1876         kobject_put(mod->holders_dir);
1877         mod_sysfs_fini(mod);
1878 }
1879
1880 #ifdef CONFIG_STRICT_MODULE_RWX
1881 /*
1882  * LKM RO/NX protection: protect module's text/ro-data
1883  * from modification and any data from execution.
1884  *
1885  * General layout of module is:
1886  *          [text] [read-only-data] [ro-after-init] [writable data]
1887  * text_size -----^                ^               ^               ^
1888  * ro_size ------------------------|               |               |
1889  * ro_after_init_size -----------------------------|               |
1890  * size -----------------------------------------------------------|
1891  *
1892  * These values are always page-aligned (as is base)
1893  */
1894 static void frob_text(const struct module_layout *layout,
1895                       int (*set_memory)(unsigned long start, int num_pages))
1896 {
1897         BUG_ON((unsigned long)layout->base & (PAGE_SIZE-1));
1898         BUG_ON((unsigned long)layout->text_size & (PAGE_SIZE-1));
1899         set_memory((unsigned long)layout->base,
1900                    layout->text_size >> PAGE_SHIFT);
1901 }
1902
1903 static void frob_rodata(const struct module_layout *layout,
1904                         int (*set_memory)(unsigned long start, int num_pages))
1905 {
1906         BUG_ON((unsigned long)layout->base & (PAGE_SIZE-1));
1907         BUG_ON((unsigned long)layout->text_size & (PAGE_SIZE-1));
1908         BUG_ON((unsigned long)layout->ro_size & (PAGE_SIZE-1));
1909         set_memory((unsigned long)layout->base + layout->text_size,
1910                    (layout->ro_size - layout->text_size) >> PAGE_SHIFT);
1911 }
1912
1913 static void frob_ro_after_init(const struct module_layout *layout,
1914                                 int (*set_memory)(unsigned long start, int num_pages))
1915 {
1916         BUG_ON((unsigned long)layout->base & (PAGE_SIZE-1));
1917         BUG_ON((unsigned long)layout->ro_size & (PAGE_SIZE-1));
1918         BUG_ON((unsigned long)layout->ro_after_init_size & (PAGE_SIZE-1));
1919         set_memory((unsigned long)layout->base + layout->ro_size,
1920                    (layout->ro_after_init_size - layout->ro_size) >> PAGE_SHIFT);
1921 }
1922
1923 static void frob_writable_data(const struct module_layout *layout,
1924                                int (*set_memory)(unsigned long start, int num_pages))
1925 {
1926         BUG_ON((unsigned long)layout->base & (PAGE_SIZE-1));
1927         BUG_ON((unsigned long)layout->ro_after_init_size & (PAGE_SIZE-1));
1928         BUG_ON((unsigned long)layout->size & (PAGE_SIZE-1));
1929         set_memory((unsigned long)layout->base + layout->ro_after_init_size,
1930                    (layout->size - layout->ro_after_init_size) >> PAGE_SHIFT);
1931 }
1932
1933 /* livepatching wants to disable read-only so it can frob module. */
1934 void module_disable_ro(const struct module *mod)
1935 {
1936         if (!rodata_enabled)
1937                 return;
1938
1939         frob_text(&mod->core_layout, set_memory_rw);
1940         frob_rodata(&mod->core_layout, set_memory_rw);
1941         frob_ro_after_init(&mod->core_layout, set_memory_rw);
1942         frob_text(&mod->init_layout, set_memory_rw);
1943         frob_rodata(&mod->init_layout, set_memory_rw);
1944 }
1945
1946 void module_enable_ro(const struct module *mod, bool after_init)
1947 {
1948         if (!rodata_enabled)
1949                 return;
1950
1951         frob_text(&mod->core_layout, set_memory_ro);
1952         frob_rodata(&mod->core_layout, set_memory_ro);
1953         frob_text(&mod->init_layout, set_memory_ro);
1954         frob_rodata(&mod->init_layout, set_memory_ro);
1955
1956         if (after_init)
1957                 frob_ro_after_init(&mod->core_layout, set_memory_ro);
1958 }
1959
1960 static void module_enable_nx(const struct module *mod)
1961 {
1962         frob_rodata(&mod->core_layout, set_memory_nx);
1963         frob_ro_after_init(&mod->core_layout, set_memory_nx);
1964         frob_writable_data(&mod->core_layout, set_memory_nx);
1965         frob_rodata(&mod->init_layout, set_memory_nx);
1966         frob_writable_data(&mod->init_layout, set_memory_nx);
1967 }
1968
1969 static void module_disable_nx(const struct module *mod)
1970 {
1971         frob_rodata(&mod->core_layout, set_memory_x);
1972         frob_ro_after_init(&mod->core_layout, set_memory_x);
1973         frob_writable_data(&mod->core_layout, set_memory_x);
1974         frob_rodata(&mod->init_layout, set_memory_x);
1975         frob_writable_data(&mod->init_layout, set_memory_x);
1976 }
1977
1978 /* Iterate through all modules and set each module's text as RW */
1979 void set_all_modules_text_rw(void)
1980 {
1981         struct module *mod;
1982
1983         if (!rodata_enabled)
1984                 return;
1985
1986         mutex_lock(&module_mutex);
1987         list_for_each_entry_rcu(mod, &modules, list) {
1988                 if (mod->state == MODULE_STATE_UNFORMED)
1989                         continue;
1990
1991                 frob_text(&mod->core_layout, set_memory_rw);
1992                 frob_text(&mod->init_layout, set_memory_rw);
1993         }
1994         mutex_unlock(&module_mutex);
1995 }
1996
1997 /* Iterate through all modules and set each module's text as RO */
1998 void set_all_modules_text_ro(void)
1999 {
2000         struct module *mod;
2001
2002         if (!rodata_enabled)
2003                 return;
2004
2005         mutex_lock(&module_mutex);
2006         list_for_each_entry_rcu(mod, &modules, list) {
2007                 /*
2008                  * Ignore going modules since it's possible that ro
2009                  * protection has already been disabled, otherwise we'll
2010                  * run into protection faults at module deallocation.
2011                  */
2012                 if (mod->state == MODULE_STATE_UNFORMED ||
2013                         mod->state == MODULE_STATE_GOING)
2014                         continue;
2015
2016                 frob_text(&mod->core_layout, set_memory_ro);
2017                 frob_text(&mod->init_layout, set_memory_ro);
2018         }
2019         mutex_unlock(&module_mutex);
2020 }
2021
2022 static void disable_ro_nx(const struct module_layout *layout)
2023 {
2024         if (rodata_enabled) {
2025                 frob_text(layout, set_memory_rw);
2026                 frob_rodata(layout, set_memory_rw);
2027                 frob_ro_after_init(layout, set_memory_rw);
2028         }
2029         frob_rodata(layout, set_memory_x);
2030         frob_ro_after_init(layout, set_memory_x);
2031         frob_writable_data(layout, set_memory_x);
2032 }
2033
2034 #else
2035 static void disable_ro_nx(const struct module_layout *layout) { }
2036 static void module_enable_nx(const struct module *mod) { }
2037 static void module_disable_nx(const struct module *mod) { }
2038 #endif
2039
2040 #ifdef CONFIG_LIVEPATCH
2041 /*
2042  * Persist Elf information about a module. Copy the Elf header,
2043  * section header table, section string table, and symtab section
2044  * index from info to mod->klp_info.
2045  */
2046 static int copy_module_elf(struct module *mod, struct load_info *info)
2047 {
2048         unsigned int size, symndx;
2049         int ret;
2050
2051         size = sizeof(*mod->klp_info);
2052         mod->klp_info = kmalloc(size, GFP_KERNEL);
2053         if (mod->klp_info == NULL)
2054                 return -ENOMEM;
2055
2056         /* Elf header */
2057         size = sizeof(mod->klp_info->hdr);
2058         memcpy(&mod->klp_info->hdr, info->hdr, size);
2059
2060         /* Elf section header table */
2061         size = sizeof(*info->sechdrs) * info->hdr->e_shnum;
2062         mod->klp_info->sechdrs = kmalloc(size, GFP_KERNEL);
2063         if (mod->klp_info->sechdrs == NULL) {
2064                 ret = -ENOMEM;
2065                 goto free_info;
2066         }
2067         memcpy(mod->klp_info->sechdrs, info->sechdrs, size);
2068
2069         /* Elf section name string table */
2070         size = info->sechdrs[info->hdr->e_shstrndx].sh_size;
2071         mod->klp_info->secstrings = kmalloc(size, GFP_KERNEL);
2072         if (mod->klp_info->secstrings == NULL) {
2073                 ret = -ENOMEM;
2074                 goto free_sechdrs;
2075         }
2076         memcpy(mod->klp_info->secstrings, info->secstrings, size);
2077
2078         /* Elf symbol section index */
2079         symndx = info->index.sym;
2080         mod->klp_info->symndx = symndx;
2081
2082         /*
2083          * For livepatch modules, core_kallsyms.symtab is a complete
2084          * copy of the original symbol table. Adjust sh_addr to point
2085          * to core_kallsyms.symtab since the copy of the symtab in module
2086          * init memory is freed at the end of do_init_module().
2087          */
2088         mod->klp_info->sechdrs[symndx].sh_addr = \
2089                 (unsigned long) mod->core_kallsyms.symtab;
2090
2091         return 0;
2092
2093 free_sechdrs:
2094         kfree(mod->klp_info->sechdrs);
2095 free_info:
2096         kfree(mod->klp_info);
2097         return ret;
2098 }
2099
2100 static void free_module_elf(struct module *mod)
2101 {
2102         kfree(mod->klp_info->sechdrs);
2103         kfree(mod->klp_info->secstrings);
2104         kfree(mod->klp_info);
2105 }
2106 #else /* !CONFIG_LIVEPATCH */
2107 static int copy_module_elf(struct module *mod, struct load_info *info)
2108 {
2109         return 0;
2110 }
2111
2112 static void free_module_elf(struct module *mod)
2113 {
2114 }
2115 #endif /* CONFIG_LIVEPATCH */
2116
2117 void __weak module_memfree(void *module_region)
2118 {
2119         vfree(module_region);
2120 }
2121
2122 void __weak module_arch_cleanup(struct module *mod)
2123 {
2124 }
2125
2126 void __weak module_arch_freeing_init(struct module *mod)
2127 {
2128 }
2129
2130 /* Free a module, remove from lists, etc. */
2131 static void free_module(struct module *mod)
2132 {
2133         trace_module_free(mod);
2134
2135         mod_sysfs_teardown(mod);
2136
2137         /* We leave it in list to prevent duplicate loads, but make sure
2138          * that noone uses it while it's being deconstructed. */
2139         mutex_lock(&module_mutex);
2140         mod->state = MODULE_STATE_UNFORMED;
2141         mutex_unlock(&module_mutex);
2142
2143         /* Remove dynamic debug info */
2144         ddebug_remove_module(mod->name);
2145
2146         /* Arch-specific cleanup. */
2147         module_arch_cleanup(mod);
2148
2149         /* Module unload stuff */
2150         module_unload_free(mod);
2151
2152         /* Free any allocated parameters. */
2153         destroy_params(mod->kp, mod->num_kp);
2154
2155         if (is_livepatch_module(mod))
2156                 free_module_elf(mod);
2157
2158         /* Now we can delete it from the lists */
2159         mutex_lock(&module_mutex);
2160         /* Unlink carefully: kallsyms could be walking list. */
2161         list_del_rcu(&mod->list);
2162         mod_tree_remove(mod);
2163         /* Remove this module from bug list, this uses list_del_rcu */
2164         module_bug_cleanup(mod);
2165         /* Wait for RCU-sched synchronizing before releasing mod->list and buglist. */
2166         synchronize_sched();
2167         mutex_unlock(&module_mutex);
2168
2169         /* This may be empty, but that's OK */
2170         disable_ro_nx(&mod->init_layout);
2171         module_arch_freeing_init(mod);
2172         module_memfree(mod->init_layout.base);
2173         kfree(mod->args);
2174         percpu_modfree(mod);
2175
2176         /* Free lock-classes; relies on the preceding sync_rcu(). */
2177         lockdep_free_key_range(mod->core_layout.base, mod->core_layout.size);
2178
2179         /* Finally, free the core (containing the module structure) */
2180         disable_ro_nx(&mod->core_layout);
2181         module_memfree(mod->core_layout.base);
2182 }
2183
2184 void *__symbol_get(const char *symbol)
2185 {
2186         struct module *owner;
2187         const struct kernel_symbol *sym;
2188
2189         preempt_disable();
2190         sym = find_symbol(symbol, &owner, NULL, true, true);
2191         if (sym && strong_try_module_get(owner))
2192                 sym = NULL;
2193         preempt_enable();
2194
2195         return sym ? (void *)sym->value : NULL;
2196 }
2197 EXPORT_SYMBOL_GPL(__symbol_get);
2198
2199 /*
2200  * Ensure that an exported symbol [global namespace] does not already exist
2201  * in the kernel or in some other module's exported symbol table.
2202  *
2203  * You must hold the module_mutex.
2204  */
2205 static int verify_export_symbols(struct module *mod)
2206 {
2207         unsigned int i;
2208         struct module *owner;
2209         const struct kernel_symbol *s;
2210         struct {
2211                 const struct kernel_symbol *sym;
2212                 unsigned int num;
2213         } arr[] = {
2214                 { mod->syms, mod->num_syms },
2215                 { mod->gpl_syms, mod->num_gpl_syms },
2216                 { mod->gpl_future_syms, mod->num_gpl_future_syms },
2217 #ifdef CONFIG_UNUSED_SYMBOLS
2218                 { mod->unused_syms, mod->num_unused_syms },
2219                 { mod->unused_gpl_syms, mod->num_unused_gpl_syms },
2220 #endif
2221         };
2222
2223         for (i = 0; i < ARRAY_SIZE(arr); i++) {
2224                 for (s = arr[i].sym; s < arr[i].sym + arr[i].num; s++) {
2225                         if (find_symbol(s->name, &owner, NULL, true, false)) {
2226                                 pr_err("%s: exports duplicate symbol %s"
2227                                        " (owned by %s)\n",
2228                                        mod->name, s->name, module_name(owner));
2229                                 return -ENOEXEC;
2230                         }
2231                 }
2232         }
2233         return 0;
2234 }
2235
2236 /* Change all symbols so that st_value encodes the pointer directly. */
2237 static int simplify_symbols(struct module *mod, const struct load_info *info)
2238 {
2239         Elf_Shdr *symsec = &info->sechdrs[info->index.sym];
2240         Elf_Sym *sym = (void *)symsec->sh_addr;
2241         unsigned long secbase;
2242         unsigned int i;
2243         int ret = 0;
2244         const struct kernel_symbol *ksym;
2245
2246         for (i = 1; i < symsec->sh_size / sizeof(Elf_Sym); i++) {
2247                 const char *name = info->strtab + sym[i].st_name;
2248
2249                 switch (sym[i].st_shndx) {
2250                 case SHN_COMMON:
2251                         /* Ignore common symbols */
2252                         if (!strncmp(name, "__gnu_lto", 9))
2253                                 break;
2254
2255                         /* We compiled with -fno-common.  These are not
2256                            supposed to happen.  */
2257                         pr_debug("Common symbol: %s\n", name);
2258                         pr_warn("%s: please compile with -fno-common\n",
2259                                mod->name);
2260                         ret = -ENOEXEC;
2261                         break;
2262
2263                 case SHN_ABS:
2264                         /* Don't need to do anything */
2265                         pr_debug("Absolute symbol: 0x%08lx\n",
2266                                (long)sym[i].st_value);
2267                         break;
2268
2269                 case SHN_LIVEPATCH:
2270                         /* Livepatch symbols are resolved by livepatch */
2271                         break;
2272
2273                 case SHN_UNDEF:
2274                         ksym = resolve_symbol_wait(mod, info, name);
2275                         /* Ok if resolved.  */
2276                         if (ksym && !IS_ERR(ksym)) {
2277                                 sym[i].st_value = ksym->value;
2278                                 break;
2279                         }
2280
2281                         /* Ok if weak.  */
2282                         if (!ksym && ELF_ST_BIND(sym[i].st_info) == STB_WEAK)
2283                                 break;
2284
2285                         pr_warn("%s: Unknown symbol %s (err %li)\n",
2286                                 mod->name, name, PTR_ERR(ksym));
2287                         ret = PTR_ERR(ksym) ?: -ENOENT;
2288                         break;
2289
2290                 default:
2291                         /* Divert to percpu allocation if a percpu var. */
2292                         if (sym[i].st_shndx == info->index.pcpu)
2293                                 secbase = (unsigned long)mod_percpu(mod);
2294                         else
2295                                 secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
2296                         sym[i].st_value += secbase;
2297                         break;
2298                 }
2299         }
2300
2301         return ret;
2302 }
2303
2304 static int apply_relocations(struct module *mod, const struct load_info *info)
2305 {
2306         unsigned int i;
2307         int err = 0;
2308
2309         /* Now do relocations. */
2310         for (i = 1; i < info->hdr->e_shnum; i++) {
2311                 unsigned int infosec = info->sechdrs[i].sh_info;
2312
2313                 /* Not a valid relocation section? */
2314                 if (infosec >= info->hdr->e_shnum)
2315                         continue;
2316
2317                 /* Don't bother with non-allocated sections */
2318                 if (!(info->sechdrs[infosec].sh_flags & SHF_ALLOC))
2319                         continue;
2320
2321                 /* Livepatch relocation sections are applied by livepatch */
2322                 if (info->sechdrs[i].sh_flags & SHF_RELA_LIVEPATCH)
2323                         continue;
2324
2325                 if (info->sechdrs[i].sh_type == SHT_REL)
2326                         err = apply_relocate(info->sechdrs, info->strtab,
2327                                              info->index.sym, i, mod);
2328                 else if (info->sechdrs[i].sh_type == SHT_RELA)
2329                         err = apply_relocate_add(info->sechdrs, info->strtab,
2330                                                  info->index.sym, i, mod);
2331                 if (err < 0)
2332                         break;
2333         }
2334         return err;
2335 }
2336
2337 /* Additional bytes needed by arch in front of individual sections */
2338 unsigned int __weak arch_mod_section_prepend(struct module *mod,
2339                                              unsigned int section)
2340 {
2341         /* default implementation just returns zero */
2342         return 0;
2343 }
2344
2345 /* Update size with this section: return offset. */
2346 static long get_offset(struct module *mod, unsigned int *size,
2347                        Elf_Shdr *sechdr, unsigned int section)
2348 {
2349         long ret;
2350
2351         *size += arch_mod_section_prepend(mod, section);
2352         ret = ALIGN(*size, sechdr->sh_addralign ?: 1);
2353         *size = ret + sechdr->sh_size;
2354         return ret;
2355 }
2356
2357 /* Lay out the SHF_ALLOC sections in a way not dissimilar to how ld
2358    might -- code, read-only data, read-write data, small data.  Tally
2359    sizes, and place the offsets into sh_entsize fields: high bit means it
2360    belongs in init. */
2361 static void layout_sections(struct module *mod, struct load_info *info)
2362 {
2363         static unsigned long const masks[][2] = {
2364                 /* NOTE: all executable code must be the first section
2365                  * in this array; otherwise modify the text_size
2366                  * finder in the two loops below */
2367                 { SHF_EXECINSTR | SHF_ALLOC, ARCH_SHF_SMALL },
2368                 { SHF_ALLOC, SHF_WRITE | ARCH_SHF_SMALL },
2369                 { SHF_RO_AFTER_INIT | SHF_ALLOC, ARCH_SHF_SMALL },
2370                 { SHF_WRITE | SHF_ALLOC, ARCH_SHF_SMALL },
2371                 { ARCH_SHF_SMALL | SHF_ALLOC, 0 }
2372         };
2373         unsigned int m, i;
2374
2375         for (i = 0; i < info->hdr->e_shnum; i++)
2376                 info->sechdrs[i].sh_entsize = ~0UL;
2377
2378         pr_debug("Core section allocation order:\n");
2379         for (m = 0; m < ARRAY_SIZE(masks); ++m) {
2380                 for (i = 0; i < info->hdr->e_shnum; ++i) {
2381                         Elf_Shdr *s = &info->sechdrs[i];
2382                         const char *sname = info->secstrings + s->sh_name;
2383
2384                         if ((s->sh_flags & masks[m][0]) != masks[m][0]
2385                             || (s->sh_flags & masks[m][1])
2386                             || s->sh_entsize != ~0UL
2387                             || strstarts(sname, ".init"))
2388                                 continue;
2389                         s->sh_entsize = get_offset(mod, &mod->core_layout.size, s, i);
2390                         pr_debug("\t%s\n", sname);
2391                 }
2392                 switch (m) {
2393                 case 0: /* executable */
2394                         mod->core_layout.size = debug_align(mod->core_layout.size);
2395                         mod->core_layout.text_size = mod->core_layout.size;
2396                         break;
2397                 case 1: /* RO: text and ro-data */
2398                         mod->core_layout.size = debug_align(mod->core_layout.size);
2399                         mod->core_layout.ro_size = mod->core_layout.size;
2400                         break;
2401                 case 2: /* RO after init */
2402                         mod->core_layout.size = debug_align(mod->core_layout.size);
2403                         mod->core_layout.ro_after_init_size = mod->core_layout.size;
2404                         break;
2405                 case 4: /* whole core */
2406                         mod->core_layout.size = debug_align(mod->core_layout.size);
2407                         break;
2408                 }
2409         }
2410
2411         pr_debug("Init section allocation order:\n");
2412         for (m = 0; m < ARRAY_SIZE(masks); ++m) {
2413                 for (i = 0; i < info->hdr->e_shnum; ++i) {
2414                         Elf_Shdr *s = &info->sechdrs[i];
2415                         const char *sname = info->secstrings + s->sh_name;
2416
2417                         if ((s->sh_flags & masks[m][0]) != masks[m][0]
2418                             || (s->sh_flags & masks[m][1])
2419                             || s->sh_entsize != ~0UL
2420                             || !strstarts(sname, ".init"))
2421                                 continue;
2422                         s->sh_entsize = (get_offset(mod, &mod->init_layout.size, s, i)
2423                                          | INIT_OFFSET_MASK);
2424                         pr_debug("\t%s\n", sname);
2425                 }
2426                 switch (m) {
2427                 case 0: /* executable */
2428                         mod->init_layout.size = debug_align(mod->init_layout.size);
2429                         mod->init_layout.text_size = mod->init_layout.size;
2430                         break;
2431                 case 1: /* RO: text and ro-data */
2432                         mod->init_layout.size = debug_align(mod->init_layout.size);
2433                         mod->init_layout.ro_size = mod->init_layout.size;
2434                         break;
2435                 case 2:
2436                         /*
2437                          * RO after init doesn't apply to init_layout (only
2438                          * core_layout), so it just takes the value of ro_size.
2439                          */
2440                         mod->init_layout.ro_after_init_size = mod->init_layout.ro_size;
2441                         break;
2442                 case 4: /* whole init */
2443                         mod->init_layout.size = debug_align(mod->init_layout.size);
2444                         break;
2445                 }
2446         }
2447 }
2448
2449 static void set_license(struct module *mod, const char *license)
2450 {
2451         if (!license)
2452                 license = "unspecified";
2453
2454         if (!license_is_gpl_compatible(license)) {
2455                 if (!test_taint(TAINT_PROPRIETARY_MODULE))
2456                         pr_warn("%s: module license '%s' taints kernel.\n",
2457                                 mod->name, license);
2458                 add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
2459                                  LOCKDEP_NOW_UNRELIABLE);
2460         }
2461 }
2462
2463 /* Parse tag=value strings from .modinfo section */
2464 static char *next_string(char *string, unsigned long *secsize)
2465 {
2466         /* Skip non-zero chars */
2467         while (string[0]) {
2468                 string++;
2469                 if ((*secsize)-- <= 1)
2470                         return NULL;
2471         }
2472
2473         /* Skip any zero padding. */
2474         while (!string[0]) {
2475                 string++;
2476                 if ((*secsize)-- <= 1)
2477                         return NULL;
2478         }
2479         return string;
2480 }
2481
2482 static char *get_modinfo(struct load_info *info, const char *tag)
2483 {
2484         char *p;
2485         unsigned int taglen = strlen(tag);
2486         Elf_Shdr *infosec = &info->sechdrs[info->index.info];
2487         unsigned long size = infosec->sh_size;
2488
2489         for (p = (char *)infosec->sh_addr; p; p = next_string(p, &size)) {
2490                 if (strncmp(p, tag, taglen) == 0 && p[taglen] == '=')
2491                         return p + taglen + 1;
2492         }
2493         return NULL;
2494 }
2495
2496 static void setup_modinfo(struct module *mod, struct load_info *info)
2497 {
2498         struct module_attribute *attr;
2499         int i;
2500
2501         for (i = 0; (attr = modinfo_attrs[i]); i++) {
2502                 if (attr->setup)
2503                         attr->setup(mod, get_modinfo(info, attr->attr.name));
2504         }
2505 }
2506
2507 static void free_modinfo(struct module *mod)
2508 {
2509         struct module_attribute *attr;
2510         int i;
2511
2512         for (i = 0; (attr = modinfo_attrs[i]); i++) {
2513                 if (attr->free)
2514                         attr->free(mod);
2515         }
2516 }
2517
2518 #ifdef CONFIG_KALLSYMS
2519
2520 /* lookup symbol in given range of kernel_symbols */
2521 static const struct kernel_symbol *lookup_symbol(const char *name,
2522         const struct kernel_symbol *start,
2523         const struct kernel_symbol *stop)
2524 {
2525         return bsearch(name, start, stop - start,
2526                         sizeof(struct kernel_symbol), cmp_name);
2527 }
2528
2529 static int is_exported(const char *name, unsigned long value,
2530                        const struct module *mod)
2531 {
2532         const struct kernel_symbol *ks;
2533         if (!mod)
2534                 ks = lookup_symbol(name, __start___ksymtab, __stop___ksymtab);
2535         else
2536                 ks = lookup_symbol(name, mod->syms, mod->syms + mod->num_syms);
2537         return ks != NULL && ks->value == value;
2538 }
2539
2540 /* As per nm */
2541 static char elf_type(const Elf_Sym *sym, const struct load_info *info)
2542 {
2543         const Elf_Shdr *sechdrs = info->sechdrs;
2544
2545         if (ELF_ST_BIND(sym->st_info) == STB_WEAK) {
2546                 if (ELF_ST_TYPE(sym->st_info) == STT_OBJECT)
2547                         return 'v';
2548                 else
2549                         return 'w';
2550         }
2551         if (sym->st_shndx == SHN_UNDEF)
2552                 return 'U';
2553         if (sym->st_shndx == SHN_ABS || sym->st_shndx == info->index.pcpu)
2554                 return 'a';
2555         if (sym->st_shndx >= SHN_LORESERVE)
2556                 return '?';
2557         if (sechdrs[sym->st_shndx].sh_flags & SHF_EXECINSTR)
2558                 return 't';
2559         if (sechdrs[sym->st_shndx].sh_flags & SHF_ALLOC
2560             && sechdrs[sym->st_shndx].sh_type != SHT_NOBITS) {
2561                 if (!(sechdrs[sym->st_shndx].sh_flags & SHF_WRITE))
2562                         return 'r';
2563                 else if (sechdrs[sym->st_shndx].sh_flags & ARCH_SHF_SMALL)
2564                         return 'g';
2565                 else
2566                         return 'd';
2567         }
2568         if (sechdrs[sym->st_shndx].sh_type == SHT_NOBITS) {
2569                 if (sechdrs[sym->st_shndx].sh_flags & ARCH_SHF_SMALL)
2570                         return 's';
2571                 else
2572                         return 'b';
2573         }
2574         if (strstarts(info->secstrings + sechdrs[sym->st_shndx].sh_name,
2575                       ".debug")) {
2576                 return 'n';
2577         }
2578         return '?';
2579 }
2580
2581 static bool is_core_symbol(const Elf_Sym *src, const Elf_Shdr *sechdrs,
2582                         unsigned int shnum, unsigned int pcpundx)
2583 {
2584         const Elf_Shdr *sec;
2585
2586         if (src->st_shndx == SHN_UNDEF
2587             || src->st_shndx >= shnum
2588             || !src->st_name)
2589                 return false;
2590
2591 #ifdef CONFIG_KALLSYMS_ALL
2592         if (src->st_shndx == pcpundx)
2593                 return true;
2594 #endif
2595
2596         sec = sechdrs + src->st_shndx;
2597         if (!(sec->sh_flags & SHF_ALLOC)
2598 #ifndef CONFIG_KALLSYMS_ALL
2599             || !(sec->sh_flags & SHF_EXECINSTR)
2600 #endif
2601             || (sec->sh_entsize & INIT_OFFSET_MASK))
2602                 return false;
2603
2604         return true;
2605 }
2606
2607 /*
2608  * We only allocate and copy the strings needed by the parts of symtab
2609  * we keep.  This is simple, but has the effect of making multiple
2610  * copies of duplicates.  We could be more sophisticated, see
2611  * linux-kernel thread starting with
2612  * <73defb5e4bca04a6431392cc341112b1@localhost>.
2613  */
2614 static void layout_symtab(struct module *mod, struct load_info *info)
2615 {
2616         Elf_Shdr *symsect = info->sechdrs + info->index.sym;
2617         Elf_Shdr *strsect = info->sechdrs + info->index.str;
2618         const Elf_Sym *src;
2619         unsigned int i, nsrc, ndst, strtab_size = 0;
2620
2621         /* Put symbol section at end of init part of module. */
2622         symsect->sh_flags |= SHF_ALLOC;
2623         symsect->sh_entsize = get_offset(mod, &mod->init_layout.size, symsect,
2624                                          info->index.sym) | INIT_OFFSET_MASK;
2625         pr_debug("\t%s\n", info->secstrings + symsect->sh_name);
2626
2627         src = (void *)info->hdr + symsect->sh_offset;
2628         nsrc = symsect->sh_size / sizeof(*src);
2629
2630         /* Compute total space required for the core symbols' strtab. */
2631         for (ndst = i = 0; i < nsrc; i++) {
2632                 if (i == 0 || is_livepatch_module(mod) ||
2633                     is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum,
2634                                    info->index.pcpu)) {
2635                         strtab_size += strlen(&info->strtab[src[i].st_name])+1;
2636                         ndst++;
2637                 }
2638         }
2639
2640         /* Append room for core symbols at end of core part. */
2641         info->symoffs = ALIGN(mod->core_layout.size, symsect->sh_addralign ?: 1);
2642         info->stroffs = mod->core_layout.size = info->symoffs + ndst * sizeof(Elf_Sym);
2643         mod->core_layout.size += strtab_size;
2644         mod->core_layout.size = debug_align(mod->core_layout.size);
2645
2646         /* Put string table section at end of init part of module. */
2647         strsect->sh_flags |= SHF_ALLOC;
2648         strsect->sh_entsize = get_offset(mod, &mod->init_layout.size, strsect,
2649                                          info->index.str) | INIT_OFFSET_MASK;
2650         pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
2651
2652         /* We'll tack temporary mod_kallsyms on the end. */
2653         mod->init_layout.size = ALIGN(mod->init_layout.size,
2654                                       __alignof__(struct mod_kallsyms));
2655         info->mod_kallsyms_init_off = mod->init_layout.size;
2656         mod->init_layout.size += sizeof(struct mod_kallsyms);
2657         mod->init_layout.size = debug_align(mod->init_layout.size);
2658 }
2659
2660 /*
2661  * We use the full symtab and strtab which layout_symtab arranged to
2662  * be appended to the init section.  Later we switch to the cut-down
2663  * core-only ones.
2664  */
2665 static void add_kallsyms(struct module *mod, const struct load_info *info)
2666 {
2667         unsigned int i, ndst;
2668         const Elf_Sym *src;
2669         Elf_Sym *dst;
2670         char *s;
2671         Elf_Shdr *symsec = &info->sechdrs[info->index.sym];
2672
2673         /* Set up to point into init section. */
2674         mod->kallsyms = mod->init_layout.base + info->mod_kallsyms_init_off;
2675
2676         mod->kallsyms->symtab = (void *)symsec->sh_addr;
2677         mod->kallsyms->num_symtab = symsec->sh_size / sizeof(Elf_Sym);
2678         /* Make sure we get permanent strtab: don't use info->strtab. */
2679         mod->kallsyms->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
2680
2681         /* Set types up while we still have access to sections. */
2682         for (i = 0; i < mod->kallsyms->num_symtab; i++)
2683                 mod->kallsyms->symtab[i].st_info
2684                         = elf_type(&mod->kallsyms->symtab[i], info);
2685
2686         /* Now populate the cut down core kallsyms for after init. */
2687         mod->core_kallsyms.symtab = dst = mod->core_layout.base + info->symoffs;
2688         mod->core_kallsyms.strtab = s = mod->core_layout.base + info->stroffs;
2689         src = mod->kallsyms->symtab;
2690         for (ndst = i = 0; i < mod->kallsyms->num_symtab; i++) {
2691                 if (i == 0 || is_livepatch_module(mod) ||
2692                     is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum,
2693                                    info->index.pcpu)) {
2694                         dst[ndst] = src[i];
2695                         dst[ndst++].st_name = s - mod->core_kallsyms.strtab;
2696                         s += strlcpy(s, &mod->kallsyms->strtab[src[i].st_name],
2697                                      KSYM_NAME_LEN) + 1;
2698                 }
2699         }
2700         mod->core_kallsyms.num_symtab = ndst;
2701 }
2702 #else
2703 static inline void layout_symtab(struct module *mod, struct load_info *info)
2704 {
2705 }
2706
2707 static void add_kallsyms(struct module *mod, const struct load_info *info)
2708 {
2709 }
2710 #endif /* CONFIG_KALLSYMS */
2711
2712 static void dynamic_debug_setup(struct module *mod, struct _ddebug *debug, unsigned int num)
2713 {
2714         if (!debug)
2715                 return;
2716 #ifdef CONFIG_DYNAMIC_DEBUG
2717         if (ddebug_add_module(debug, num, mod->name))
2718                 pr_err("dynamic debug error adding module: %s\n",
2719                         debug->modname);
2720 #endif
2721 }
2722
2723 static void dynamic_debug_remove(struct module *mod, struct _ddebug *debug)
2724 {
2725         if (debug)
2726                 ddebug_remove_module(mod->name);
2727 }
2728
2729 void * __weak module_alloc(unsigned long size)
2730 {
2731         return vmalloc_exec(size);
2732 }
2733
2734 #ifdef CONFIG_DEBUG_KMEMLEAK
2735 static void kmemleak_load_module(const struct module *mod,
2736                                  const struct load_info *info)
2737 {
2738         unsigned int i;
2739
2740         /* only scan the sections containing data */
2741         kmemleak_scan_area(mod, sizeof(struct module), GFP_KERNEL);
2742
2743         for (i = 1; i < info->hdr->e_shnum; i++) {
2744                 /* Scan all writable sections that's not executable */
2745                 if (!(info->sechdrs[i].sh_flags & SHF_ALLOC) ||
2746                     !(info->sechdrs[i].sh_flags & SHF_WRITE) ||
2747                     (info->sechdrs[i].sh_flags & SHF_EXECINSTR))
2748                         continue;
2749
2750                 kmemleak_scan_area((void *)info->sechdrs[i].sh_addr,
2751                                    info->sechdrs[i].sh_size, GFP_KERNEL);
2752         }
2753 }
2754 #else
2755 static inline void kmemleak_load_module(const struct module *mod,
2756                                         const struct load_info *info)
2757 {
2758 }
2759 #endif
2760
2761 #ifdef CONFIG_MODULE_SIG
2762 static int module_sig_check(struct load_info *info, int flags)
2763 {
2764         int err = -ENOKEY;
2765         const unsigned long markerlen = sizeof(MODULE_SIG_STRING) - 1;
2766         const void *mod = info->hdr;
2767
2768         /*
2769          * Require flags == 0, as a module with version information
2770          * removed is no longer the module that was signed
2771          */
2772         if (flags == 0 &&
2773             info->len > markerlen &&
2774             memcmp(mod + info->len - markerlen, MODULE_SIG_STRING, markerlen) == 0) {
2775                 /* We truncate the module to discard the signature */
2776                 info->len -= markerlen;
2777                 err = mod_verify_sig(mod, &info->len);
2778         }
2779
2780         if (!err) {
2781                 info->sig_ok = true;
2782                 return 0;
2783         }
2784
2785         /* Not having a signature is only an error if we're strict. */
2786         if (err == -ENOKEY && !is_module_sig_enforced())
2787                 err = 0;
2788
2789         return err;
2790 }
2791 #else /* !CONFIG_MODULE_SIG */
2792 static int module_sig_check(struct load_info *info, int flags)
2793 {
2794         return 0;
2795 }
2796 #endif /* !CONFIG_MODULE_SIG */
2797
2798 /* Sanity checks against invalid binaries, wrong arch, weird elf version. */
2799 static int elf_header_check(struct load_info *info)
2800 {
2801         if (info->len < sizeof(*(info->hdr)))
2802                 return -ENOEXEC;
2803
2804         if (memcmp(info->hdr->e_ident, ELFMAG, SELFMAG) != 0
2805             || info->hdr->e_type != ET_REL
2806             || !elf_check_arch(info->hdr)
2807             || info->hdr->e_shentsize != sizeof(Elf_Shdr))
2808                 return -ENOEXEC;
2809
2810         if (info->hdr->e_shoff >= info->len
2811             || (info->hdr->e_shnum * sizeof(Elf_Shdr) >
2812                 info->len - info->hdr->e_shoff))
2813                 return -ENOEXEC;
2814
2815         return 0;
2816 }
2817
2818 #define COPY_CHUNK_SIZE (16*PAGE_SIZE)
2819
2820 static int copy_chunked_from_user(void *dst, const void __user *usrc, unsigned long len)
2821 {
2822         do {
2823                 unsigned long n = min(len, COPY_CHUNK_SIZE);
2824
2825                 if (copy_from_user(dst, usrc, n) != 0)
2826                         return -EFAULT;
2827                 cond_resched();
2828                 dst += n;
2829                 usrc += n;
2830                 len -= n;
2831         } while (len);
2832         return 0;
2833 }
2834
2835 #ifdef CONFIG_LIVEPATCH
2836 static int check_modinfo_livepatch(struct module *mod, struct load_info *info)
2837 {
2838         if (get_modinfo(info, "livepatch")) {
2839                 mod->klp = true;
2840                 add_taint_module(mod, TAINT_LIVEPATCH, LOCKDEP_STILL_OK);
2841                 pr_notice_once("%s: tainting kernel with TAINT_LIVEPATCH\n",
2842                                mod->name);
2843         }
2844
2845         return 0;
2846 }
2847 #else /* !CONFIG_LIVEPATCH */
2848 static int check_modinfo_livepatch(struct module *mod, struct load_info *info)
2849 {
2850         if (get_modinfo(info, "livepatch")) {
2851                 pr_err("%s: module is marked as livepatch module, but livepatch support is disabled",
2852                        mod->name);
2853                 return -ENOEXEC;
2854         }
2855
2856         return 0;
2857 }
2858 #endif /* CONFIG_LIVEPATCH */
2859
2860 static void check_modinfo_retpoline(struct module *mod, struct load_info *info)
2861 {
2862         if (retpoline_module_ok(get_modinfo(info, "retpoline")))
2863                 return;
2864
2865         pr_warn("%s: loading module not compiled with retpoline compiler.\n",
2866                 mod->name);
2867 }
2868
2869 /* Sets info->hdr and info->len. */
2870 static int copy_module_from_user(const void __user *umod, unsigned long len,
2871                                   struct load_info *info)
2872 {
2873         int err;
2874
2875         info->len = len;
2876         if (info->len < sizeof(*(info->hdr)))
2877                 return -ENOEXEC;
2878
2879         err = security_kernel_read_file(NULL, READING_MODULE);
2880         if (err)
2881                 return err;
2882
2883         /* Suck in entire file: we'll want most of it. */
2884         info->hdr = __vmalloc(info->len,
2885                         GFP_KERNEL | __GFP_NOWARN, PAGE_KERNEL);
2886         if (!info->hdr)
2887                 return -ENOMEM;
2888
2889         if (copy_chunked_from_user(info->hdr, umod, info->len) != 0) {
2890                 vfree(info->hdr);
2891                 return -EFAULT;
2892         }
2893
2894         return 0;
2895 }
2896
2897 static void free_copy(struct load_info *info)
2898 {
2899         vfree(info->hdr);
2900 }
2901
2902 static int rewrite_section_headers(struct load_info *info, int flags)
2903 {
2904         unsigned int i;
2905
2906         /* This should always be true, but let's be sure. */
2907         info->sechdrs[0].sh_addr = 0;
2908
2909         for (i = 1; i < info->hdr->e_shnum; i++) {
2910                 Elf_Shdr *shdr = &info->sechdrs[i];
2911                 if (shdr->sh_type != SHT_NOBITS
2912                     && info->len < shdr->sh_offset + shdr->sh_size) {
2913                         pr_err("Module len %lu truncated\n", info->len);
2914                         return -ENOEXEC;
2915                 }
2916
2917                 /* Mark all sections sh_addr with their address in the
2918                    temporary image. */
2919                 shdr->sh_addr = (size_t)info->hdr + shdr->sh_offset;
2920
2921 #ifndef CONFIG_MODULE_UNLOAD
2922                 /* Don't load .exit sections */
2923                 if (strstarts(info->secstrings+shdr->sh_name, ".exit"))
2924                         shdr->sh_flags &= ~(unsigned long)SHF_ALLOC;
2925 #endif
2926         }
2927
2928         /* Track but don't keep modinfo and version sections. */
2929         if (flags & MODULE_INIT_IGNORE_MODVERSIONS)
2930                 info->index.vers = 0; /* Pretend no __versions section! */
2931         else
2932                 info->index.vers = find_sec(info, "__versions");
2933         info->sechdrs[info->index.vers].sh_flags &= ~(unsigned long)SHF_ALLOC;
2934
2935         info->index.info = find_sec(info, ".modinfo");
2936         if (!info->index.info)
2937                 info->name = "(missing .modinfo section)";
2938         else
2939                 info->name = get_modinfo(info, "name");
2940         info->sechdrs[info->index.info].sh_flags &= ~(unsigned long)SHF_ALLOC;
2941
2942         return 0;
2943 }
2944
2945 /*
2946  * Set up our basic convenience variables (pointers to section headers,
2947  * search for module section index etc), and do some basic section
2948  * verification.
2949  *
2950  * Return the temporary module pointer (we'll replace it with the final
2951  * one when we move the module sections around).
2952  */
2953 static struct module *setup_load_info(struct load_info *info, int flags)
2954 {
2955         unsigned int i;
2956         int err;
2957         struct module *mod;
2958
2959         /* Set up the convenience variables */
2960         info->sechdrs = (void *)info->hdr + info->hdr->e_shoff;
2961         info->secstrings = (void *)info->hdr
2962                 + info->sechdrs[info->hdr->e_shstrndx].sh_offset;
2963
2964         err = rewrite_section_headers(info, flags);
2965         if (err)
2966                 return ERR_PTR(err);
2967
2968         /* Find internal symbols and strings. */
2969         for (i = 1; i < info->hdr->e_shnum; i++) {
2970                 if (info->sechdrs[i].sh_type == SHT_SYMTAB) {
2971                         info->index.sym = i;
2972                         info->index.str = info->sechdrs[i].sh_link;
2973                         info->strtab = (char *)info->hdr
2974                                 + info->sechdrs[info->index.str].sh_offset;
2975                         break;
2976                 }
2977         }
2978
2979         info->index.mod = find_sec(info, ".gnu.linkonce.this_module");
2980         if (!info->index.mod) {
2981                 pr_warn("%s: No module found in object\n",
2982                         info->name ?: "(missing .modinfo name field)");
2983                 return ERR_PTR(-ENOEXEC);
2984         }
2985         /* This is temporary: point mod into copy of data. */
2986         mod = (void *)info->sechdrs[info->index.mod].sh_addr;
2987
2988         /*
2989          * If we didn't load the .modinfo 'name' field, fall back to
2990          * on-disk struct mod 'name' field.
2991          */
2992         if (!info->name)
2993                 info->name = mod->name;
2994
2995         if (info->index.sym == 0) {
2996                 pr_warn("%s: module has no symbols (stripped?)\n", info->name);
2997                 return ERR_PTR(-ENOEXEC);
2998         }
2999
3000         info->index.pcpu = find_pcpusec(info);
3001
3002         /* Check module struct version now, before we try to use module. */
3003         if (!check_modstruct_version(info, mod))
3004                 return ERR_PTR(-ENOEXEC);
3005
3006         return mod;
3007 }
3008
3009 static int check_modinfo(struct module *mod, struct load_info *info, int flags)
3010 {
3011         const char *modmagic = get_modinfo(info, "vermagic");
3012         int err;
3013
3014         if (flags & MODULE_INIT_IGNORE_VERMAGIC)
3015                 modmagic = NULL;
3016
3017         /* This is allowed: modprobe --force will invalidate it. */
3018         if (!modmagic) {
3019                 err = try_to_force_load(mod, "bad vermagic");
3020                 if (err)
3021                         return err;
3022         } else if (!same_magic(modmagic, vermagic, info->index.vers)) {
3023                 pr_err("%s: version magic '%s' should be '%s'\n",
3024                        info->name, modmagic, vermagic);
3025                 return -ENOEXEC;
3026         }
3027
3028         if (!get_modinfo(info, "intree")) {
3029                 if (!test_taint(TAINT_OOT_MODULE))
3030                         pr_warn("%s: loading out-of-tree module taints kernel.\n",
3031                                 mod->name);
3032                 add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
3033         }
3034
3035         check_modinfo_retpoline(mod, info);
3036
3037         if (get_modinfo(info, "staging")) {
3038                 add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
3039                 pr_warn("%s: module is from the staging directory, the quality "
3040                         "is unknown, you have been warned.\n", mod->name);
3041         }
3042
3043         err = check_modinfo_livepatch(mod, info);
3044         if (err)
3045                 return err;
3046
3047         /* Set up license info based on the info section */
3048         set_license(mod, get_modinfo(info, "license"));
3049
3050         return 0;
3051 }
3052
3053 static int find_module_sections(struct module *mod, struct load_info *info)
3054 {
3055         mod->kp = section_objs(info, "__param",
3056                                sizeof(*mod->kp), &mod->num_kp);
3057         mod->syms = section_objs(info, "__ksymtab",
3058                                  sizeof(*mod->syms), &mod->num_syms);
3059         mod->crcs = section_addr(info, "__kcrctab");
3060         mod->gpl_syms = section_objs(info, "__ksymtab_gpl",
3061                                      sizeof(*mod->gpl_syms),
3062                                      &mod->num_gpl_syms);
3063         mod->gpl_crcs = section_addr(info, "__kcrctab_gpl");
3064         mod->gpl_future_syms = section_objs(info,
3065                                             "__ksymtab_gpl_future",
3066                                             sizeof(*mod->gpl_future_syms),
3067                                             &mod->num_gpl_future_syms);
3068         mod->gpl_future_crcs = section_addr(info, "__kcrctab_gpl_future");
3069
3070 #ifdef CONFIG_UNUSED_SYMBOLS
3071         mod->unused_syms = section_objs(info, "__ksymtab_unused",
3072                                         sizeof(*mod->unused_syms),
3073                                         &mod->num_unused_syms);
3074         mod->unused_crcs = section_addr(info, "__kcrctab_unused");
3075         mod->unused_gpl_syms = section_objs(info, "__ksymtab_unused_gpl",
3076                                             sizeof(*mod->unused_gpl_syms),
3077                                             &mod->num_unused_gpl_syms);
3078         mod->unused_gpl_crcs = section_addr(info, "__kcrctab_unused_gpl");
3079 #endif
3080 #ifdef CONFIG_CONSTRUCTORS
3081         mod->ctors = section_objs(info, ".ctors",
3082                                   sizeof(*mod->ctors), &mod->num_ctors);
3083         if (!mod->ctors)
3084                 mod->ctors = section_objs(info, ".init_array",
3085                                 sizeof(*mod->ctors), &mod->num_ctors);
3086         else if (find_sec(info, ".init_array")) {
3087                 /*
3088                  * This shouldn't happen with same compiler and binutils
3089                  * building all parts of the module.
3090                  */
3091                 pr_warn("%s: has both .ctors and .init_array.\n",
3092                        mod->name);
3093                 return -EINVAL;
3094         }
3095 #endif
3096
3097 #ifdef CONFIG_TRACEPOINTS
3098         mod->tracepoints_ptrs = section_objs(info, "__tracepoints_ptrs",
3099                                              sizeof(*mod->tracepoints_ptrs),
3100                                              &mod->num_tracepoints);
3101 #endif
3102 #ifdef HAVE_JUMP_LABEL
3103         mod->jump_entries = section_objs(info, "__jump_table",
3104                                         sizeof(*mod->jump_entries),
3105                                         &mod->num_jump_entries);
3106 #endif
3107 #ifdef CONFIG_EVENT_TRACING
3108         mod->trace_events = section_objs(info, "_ftrace_events",
3109                                          sizeof(*mod->trace_events),
3110                                          &mod->num_trace_events);
3111         mod->trace_evals = section_objs(info, "_ftrace_eval_map",
3112                                         sizeof(*mod->trace_evals),
3113                                         &mod->num_trace_evals);
3114 #endif
3115 #ifdef CONFIG_TRACING
3116         mod->trace_bprintk_fmt_start = section_objs(info, "__trace_printk_fmt",
3117                                          sizeof(*mod->trace_bprintk_fmt_start),
3118                                          &mod->num_trace_bprintk_fmt);
3119 #endif
3120 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
3121         /* sechdrs[0].sh_size is always zero */
3122         mod->ftrace_callsites = section_objs(info, "__mcount_loc",
3123                                              sizeof(*mod->ftrace_callsites),
3124                                              &mod->num_ftrace_callsites);
3125 #endif
3126 #ifdef CONFIG_FUNCTION_ERROR_INJECTION
3127         mod->ei_funcs = section_objs(info, "_error_injection_whitelist",
3128                                             sizeof(*mod->ei_funcs),
3129                                             &mod->num_ei_funcs);
3130 #endif
3131         mod->extable = section_objs(info, "__ex_table",
3132                                     sizeof(*mod->extable), &mod->num_exentries);
3133
3134         if (section_addr(info, "__obsparm"))
3135                 pr_warn("%s: Ignoring obsolete parameters\n", mod->name);
3136
3137         info->debug = section_objs(info, "__verbose",
3138                                    sizeof(*info->debug), &info->num_debug);
3139
3140         return 0;
3141 }
3142
3143 static int move_module(struct module *mod, struct load_info *info)
3144 {
3145         int i;
3146         void *ptr;
3147
3148         /* Do the allocs. */
3149         ptr = module_alloc(mod->core_layout.size);
3150         /*
3151          * The pointer to this block is stored in the module structure
3152          * which is inside the block. Just mark it as not being a
3153          * leak.
3154          */
3155         kmemleak_not_leak(ptr);
3156         if (!ptr)
3157                 return -ENOMEM;
3158
3159         memset(ptr, 0, mod->core_layout.size);
3160         mod->core_layout.base = ptr;
3161
3162         if (mod->init_layout.size) {
3163                 ptr = module_alloc(mod->init_layout.size);
3164                 /*
3165                  * The pointer to this block is stored in the module structure
3166                  * which is inside the block. This block doesn't need to be
3167                  * scanned as it contains data and code that will be freed
3168                  * after the module is initialized.
3169                  */
3170                 kmemleak_ignore(ptr);
3171                 if (!ptr) {
3172                         module_memfree(mod->core_layout.base);
3173                         return -ENOMEM;
3174                 }
3175                 memset(ptr, 0, mod->init_layout.size);
3176                 mod->init_layout.base = ptr;
3177         } else
3178                 mod->init_layout.base = NULL;
3179
3180         /* Transfer each section which specifies SHF_ALLOC */
3181         pr_debug("final section addresses:\n");
3182         for (i = 0; i < info->hdr->e_shnum; i++) {
3183                 void *dest;
3184                 Elf_Shdr *shdr = &info->sechdrs[i];
3185
3186                 if (!(shdr->sh_flags & SHF_ALLOC))
3187                         continue;
3188
3189                 if (shdr->sh_entsize & INIT_OFFSET_MASK)
3190                         dest = mod->init_layout.base
3191                                 + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
3192                 else
3193                         dest = mod->core_layout.base + shdr->sh_entsize;
3194
3195                 if (shdr->sh_type != SHT_NOBITS)
3196                         memcpy(dest, (void *)shdr->sh_addr, shdr->sh_size);
3197                 /* Update sh_addr to point to copy in image. */
3198                 shdr->sh_addr = (unsigned long)dest;
3199                 pr_debug("\t0x%lx %s\n",
3200                          (long)shdr->sh_addr, info->secstrings + shdr->sh_name);
3201         }
3202
3203         return 0;
3204 }
3205
3206 static int check_module_license_and_versions(struct module *mod)
3207 {
3208         int prev_taint = test_taint(TAINT_PROPRIETARY_MODULE);
3209
3210         /*
3211          * ndiswrapper is under GPL by itself, but loads proprietary modules.
3212          * Don't use add_taint_module(), as it would prevent ndiswrapper from
3213          * using GPL-only symbols it needs.
3214          */
3215         if (strcmp(mod->name, "ndiswrapper") == 0)
3216                 add_taint(TAINT_PROPRIETARY_MODULE, LOCKDEP_NOW_UNRELIABLE);
3217
3218         /* driverloader was caught wrongly pretending to be under GPL */
3219         if (strcmp(mod->name, "driverloader") == 0)
3220                 add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
3221                                  LOCKDEP_NOW_UNRELIABLE);
3222
3223         /* lve claims to be GPL but upstream won't provide source */
3224         if (strcmp(mod->name, "lve") == 0)
3225                 add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
3226                                  LOCKDEP_NOW_UNRELIABLE);
3227
3228         if (!prev_taint && test_taint(TAINT_PROPRIETARY_MODULE))
3229                 pr_warn("%s: module license taints kernel.\n", mod->name);
3230
3231 #ifdef CONFIG_MODVERSIONS
3232         if ((mod->num_syms && !mod->crcs)
3233             || (mod->num_gpl_syms && !mod->gpl_crcs)
3234             || (mod->num_gpl_future_syms && !mod->gpl_future_crcs)
3235 #ifdef CONFIG_UNUSED_SYMBOLS
3236             || (mod->num_unused_syms && !mod->unused_crcs)
3237             || (mod->num_unused_gpl_syms && !mod->unused_gpl_crcs)
3238 #endif
3239                 ) {
3240                 return try_to_force_load(mod,
3241                                          "no versions for exported symbols");
3242         }
3243 #endif
3244         return 0;
3245 }
3246
3247 static void flush_module_icache(const struct module *mod)
3248 {
3249         mm_segment_t old_fs;
3250
3251         /* flush the icache in correct context */
3252         old_fs = get_fs();
3253         set_fs(KERNEL_DS);
3254
3255         /*
3256          * Flush the instruction cache, since we've played with text.
3257          * Do it before processing of module parameters, so the module
3258          * can provide parameter accessor functions of its own.
3259          */
3260         if (mod->init_layout.base)
3261                 flush_icache_range((unsigned long)mod->init_layout.base,
3262                                    (unsigned long)mod->init_layout.base
3263                                    + mod->init_layout.size);
3264         flush_icache_range((unsigned long)mod->core_layout.base,
3265                            (unsigned long)mod->core_layout.base + mod->core_layout.size);
3266
3267         set_fs(old_fs);
3268 }
3269
3270 int __weak module_frob_arch_sections(Elf_Ehdr *hdr,
3271                                      Elf_Shdr *sechdrs,
3272                                      char *secstrings,
3273                                      struct module *mod)
3274 {
3275         return 0;
3276 }
3277
3278 /* module_blacklist is a comma-separated list of module names */
3279 static char *module_blacklist;
3280 static bool blacklisted(const char *module_name)
3281 {
3282         const char *p;
3283         size_t len;
3284
3285         if (!module_blacklist)
3286                 return false;
3287
3288         for (p = module_blacklist; *p; p += len) {
3289                 len = strcspn(p, ",");
3290                 if (strlen(module_name) == len && !memcmp(module_name, p, len))
3291                         return true;
3292                 if (p[len] == ',')
3293                         len++;
3294         }
3295         return false;
3296 }
3297 core_param(module_blacklist, module_blacklist, charp, 0400);
3298
3299 static struct module *layout_and_allocate(struct load_info *info, int flags)
3300 {
3301         /* Module within temporary copy. */
3302         struct module *mod;
3303         unsigned int ndx;
3304         int err;
3305
3306         mod = setup_load_info(info, flags);
3307         if (IS_ERR(mod))
3308                 return mod;
3309
3310         if (blacklisted(info->name))
3311                 return ERR_PTR(-EPERM);
3312
3313         err = check_modinfo(mod, info, flags);
3314         if (err)
3315                 return ERR_PTR(err);
3316
3317         /* Allow arches to frob section contents and sizes.  */
3318         err = module_frob_arch_sections(info->hdr, info->sechdrs,
3319                                         info->secstrings, mod);
3320         if (err < 0)
3321                 return ERR_PTR(err);
3322
3323         /* We will do a special allocation for per-cpu sections later. */
3324         info->sechdrs[info->index.pcpu].sh_flags &= ~(unsigned long)SHF_ALLOC;
3325
3326         /*
3327          * Mark ro_after_init section with SHF_RO_AFTER_INIT so that
3328          * layout_sections() can put it in the right place.
3329          * Note: ro_after_init sections also have SHF_{WRITE,ALLOC} set.
3330          */
3331         ndx = find_sec(info, ".data..ro_after_init");
3332         if (ndx)
3333                 info->sechdrs[ndx].sh_flags |= SHF_RO_AFTER_INIT;
3334
3335         /* Determine total sizes, and put offsets in sh_entsize.  For now
3336            this is done generically; there doesn't appear to be any
3337            special cases for the architectures. */
3338         layout_sections(mod, info);
3339         layout_symtab(mod, info);
3340
3341         /* Allocate and move to the final place */
3342         err = move_module(mod, info);
3343         if (err)
3344                 return ERR_PTR(err);
3345
3346         /* Module has been copied to its final place now: return it. */
3347         mod = (void *)info->sechdrs[info->index.mod].sh_addr;
3348         kmemleak_load_module(mod, info);
3349         return mod;
3350 }
3351
3352 /* mod is no longer valid after this! */
3353 static void module_deallocate(struct module *mod, struct load_info *info)
3354 {
3355         percpu_modfree(mod);
3356         module_arch_freeing_init(mod);
3357         module_memfree(mod->init_layout.base);
3358         module_memfree(mod->core_layout.base);
3359 }
3360
3361 int __weak module_finalize(const Elf_Ehdr *hdr,
3362                            const Elf_Shdr *sechdrs,
3363                            struct module *me)
3364 {
3365         return 0;
3366 }
3367
3368 static int post_relocation(struct module *mod, const struct load_info *info)
3369 {
3370         /* Sort exception table now relocations are done. */
3371         sort_extable(mod->extable, mod->extable + mod->num_exentries);
3372
3373         /* Copy relocated percpu area over. */
3374         percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr,
3375                        info->sechdrs[info->index.pcpu].sh_size);
3376
3377         /* Setup kallsyms-specific fields. */
3378         add_kallsyms(mod, info);
3379
3380         /* Arch-specific module finalizing. */
3381         return module_finalize(info->hdr, info->sechdrs, mod);
3382 }
3383
3384 /* Is this module of this name done loading?  No locks held. */
3385 static bool finished_loading(const char *name)
3386 {
3387         struct module *mod;
3388         bool ret;
3389
3390         /*
3391          * The module_mutex should not be a heavily contended lock;
3392          * if we get the occasional sleep here, we'll go an extra iteration
3393          * in the wait_event_interruptible(), which is harmless.
3394          */
3395         sched_annotate_sleep();
3396         mutex_lock(&module_mutex);
3397         mod = find_module_all(name, strlen(name), true);
3398         ret = !mod || mod->state == MODULE_STATE_LIVE