This source file includes following definitions.
- kallsyms_symbol_value
 
- module_is_live
 
- within_module_core
 
- within_module_init
 
- within_module
 
- try_module_get
 
- module_put
 
- __module_get
 
- module_requested_async_probing
 
- is_livepatch_module
 
- is_livepatch_module
 
- __module_address
 
- __module_text_address
 
- is_module_address
 
- is_module_percpu_address
 
- __is_module_percpu_address
 
- is_module_text_address
 
- within_module_core
 
- within_module_init
 
- within_module
 
- __module_get
 
- try_module_get
 
- module_put
 
- module_address_lookup
 
- lookup_module_symbol_name
 
- lookup_module_symbol_attrs
 
- module_get_kallsym
 
- module_kallsyms_lookup_name
 
- module_kallsyms_on_each_symbol
 
- register_module_notifier
 
- unregister_module_notifier
 
- print_modules
 
- module_requested_async_probing
 
- is_module_sig_enforced
 
- set_module_sig_enforced
 
- dereference_module_function_descriptor
 
- set_all_modules_text_rw
 
- set_all_modules_text_ro
 
- module_enable_ro
 
- module_disable_ro
 
- module_bug_finalize
 
- module_bug_cleanup
 
- retpoline_module_ok
 
- module_sig_ok
 
- module_sig_ok
 
   1 #ifndef _LINUX_MODULE_H
   2 #define _LINUX_MODULE_H
   3 
   4 
   5 
   6 
   7 
   8 
   9 #include <linux/list.h>
  10 #include <linux/stat.h>
  11 #include <linux/compiler.h>
  12 #include <linux/cache.h>
  13 #include <linux/kmod.h>
  14 #include <linux/init.h>
  15 #include <linux/elf.h>
  16 #include <linux/stringify.h>
  17 #include <linux/kobject.h>
  18 #include <linux/moduleparam.h>
  19 #include <linux/jump_label.h>
  20 #include <linux/export.h>
  21 #include <linux/rbtree_latch.h>
  22 #include <linux/error-injection.h>
  23 #include <linux/tracepoint-defs.h>
  24 #include <linux/srcu.h>
  25 
  26 #include <linux/percpu.h>
  27 #include <asm/module.h>
  28 
  29 
  30 #define MODULE_SUPPORTED_DEVICE(name)
  31 
  32 #define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
  33 
  34 struct modversion_info {
  35         unsigned long crc;
  36         char name[MODULE_NAME_LEN];
  37 };
  38 
  39 struct module;
  40 struct exception_table_entry;
  41 
  42 struct module_kobject {
  43         struct kobject kobj;
  44         struct module *mod;
  45         struct kobject *drivers_dir;
  46         struct module_param_attrs *mp;
  47         struct completion *kobj_completion;
  48 } __randomize_layout;
  49 
  50 struct module_attribute {
  51         struct attribute attr;
  52         ssize_t (*show)(struct module_attribute *, struct module_kobject *,
  53                         char *);
  54         ssize_t (*store)(struct module_attribute *, struct module_kobject *,
  55                          const char *, size_t count);
  56         void (*setup)(struct module *, const char *);
  57         int (*test)(struct module *);
  58         void (*free)(struct module *);
  59 };
  60 
  61 struct module_version_attribute {
  62         struct module_attribute mattr;
  63         const char *module_name;
  64         const char *version;
  65 } __attribute__ ((__aligned__(sizeof(void *))));
  66 
  67 extern ssize_t __modver_version_show(struct module_attribute *,
  68                                      struct module_kobject *, char *);
  69 
  70 extern struct module_attribute module_uevent;
  71 
  72 
  73 extern int init_module(void);
  74 extern void cleanup_module(void);
  75 
  76 #ifndef MODULE
  77 
  78 
  79 
  80 
  81 
  82 
  83 
  84 
  85 #define module_init(x)  __initcall(x);
  86 
  87 
  88 
  89 
  90 
  91 
  92 
  93 
  94 
  95 
  96 
  97 #define module_exit(x)  __exitcall(x);
  98 
  99 #else 
 100 
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 #define early_initcall(fn)              module_init(fn)
 109 #define core_initcall(fn)               module_init(fn)
 110 #define core_initcall_sync(fn)          module_init(fn)
 111 #define postcore_initcall(fn)           module_init(fn)
 112 #define postcore_initcall_sync(fn)      module_init(fn)
 113 #define arch_initcall(fn)               module_init(fn)
 114 #define subsys_initcall(fn)             module_init(fn)
 115 #define subsys_initcall_sync(fn)        module_init(fn)
 116 #define fs_initcall(fn)                 module_init(fn)
 117 #define fs_initcall_sync(fn)            module_init(fn)
 118 #define rootfs_initcall(fn)             module_init(fn)
 119 #define device_initcall(fn)             module_init(fn)
 120 #define device_initcall_sync(fn)        module_init(fn)
 121 #define late_initcall(fn)               module_init(fn)
 122 #define late_initcall_sync(fn)          module_init(fn)
 123 
 124 #define console_initcall(fn)            module_init(fn)
 125 
 126 
 127 #define module_init(initfn)                                     \
 128         static inline initcall_t __maybe_unused __inittest(void)                \
 129         { return initfn; }                                      \
 130         int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));
 131 
 132 
 133 #define module_exit(exitfn)                                     \
 134         static inline exitcall_t __maybe_unused __exittest(void)                \
 135         { return exitfn; }                                      \
 136         void cleanup_module(void) __copy(exitfn) __attribute__((alias(#exitfn)));
 137 
 138 #endif
 139 
 140 
 141 
 142 #ifdef CONFIG_MODULES
 143 #define __init_or_module
 144 #define __initdata_or_module
 145 #define __initconst_or_module
 146 #define __INIT_OR_MODULE        .text
 147 #define __INITDATA_OR_MODULE    .data
 148 #define __INITRODATA_OR_MODULE  .section ".rodata","a",%progbits
 149 #else
 150 #define __init_or_module __init
 151 #define __initdata_or_module __initdata
 152 #define __initconst_or_module __initconst
 153 #define __INIT_OR_MODULE __INIT
 154 #define __INITDATA_OR_MODULE __INITDATA
 155 #define __INITRODATA_OR_MODULE __INITRODATA
 156 #endif 
 157 
 158 
 159 #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
 160 
 161 
 162 #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
 163 
 164 
 165 
 166 
 167 #define MODULE_SOFTDEP(_softdep) MODULE_INFO(softdep, _softdep)
 168 
 169 
 170 
 171 
 172 
 173 
 174 
 175 
 176 
 177 
 178 
 179 
 180 
 181 
 182 
 183 
 184 
 185 
 186 
 187 
 188 
 189 
 190 
 191 
 192 
 193 
 194 
 195 
 196 
 197 
 198 
 199 
 200 
 201 
 202 
 203 
 204 
 205 
 206 
 207 
 208 
 209 
 210 
 211 
 212 
 213 #define MODULE_LICENSE(_license) MODULE_INFO(license, _license)
 214 
 215 
 216 
 217 
 218 
 219 #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
 220 
 221 
 222 #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description)
 223 
 224 #ifdef MODULE
 225 
 226 #define MODULE_DEVICE_TABLE(type, name)                                 \
 227 extern typeof(name) __mod_##type##__##name##_device_table               \
 228   __attribute__ ((unused, alias(__stringify(name))))
 229 #else  
 230 #define MODULE_DEVICE_TABLE(type, name)
 231 #endif
 232 
 233 
 234 
 235 
 236 
 237 
 238 
 239 
 240 
 241 
 242 
 243 
 244 
 245 
 246 
 247 
 248 
 249 
 250 #if defined(MODULE) || !defined(CONFIG_SYSFS)
 251 #define MODULE_VERSION(_version) MODULE_INFO(version, _version)
 252 #else
 253 #define MODULE_VERSION(_version)                                        \
 254         MODULE_INFO(version, _version);                                 \
 255         static struct module_version_attribute ___modver_attr = {       \
 256                 .mattr  = {                                             \
 257                         .attr   = {                                     \
 258                                 .name   = "version",                    \
 259                                 .mode   = S_IRUGO,                      \
 260                         },                                              \
 261                         .show   = __modver_version_show,                \
 262                 },                                                      \
 263                 .module_name    = KBUILD_MODNAME,                       \
 264                 .version        = _version,                             \
 265         };                                                              \
 266         static const struct module_version_attribute                    \
 267         __used __attribute__ ((__section__ ("__modver")))               \
 268         * __moduleparam_const __modver_attr = &___modver_attr
 269 #endif
 270 
 271 
 272 
 273 
 274 #define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware)
 275 
 276 #define MODULE_IMPORT_NS(ns) MODULE_INFO(import_ns, #ns)
 277 
 278 struct notifier_block;
 279 
 280 #ifdef CONFIG_MODULES
 281 
 282 extern int modules_disabled; 
 283 
 284 void *__symbol_get(const char *symbol);
 285 void *__symbol_get_gpl(const char *symbol);
 286 #define symbol_get(x) ((typeof(&x))(__symbol_get(__stringify(x))))
 287 
 288 
 289 struct module_use {
 290         struct list_head source_list;
 291         struct list_head target_list;
 292         struct module *source, *target;
 293 };
 294 
 295 enum module_state {
 296         MODULE_STATE_LIVE,      
 297         MODULE_STATE_COMING,    
 298         MODULE_STATE_GOING,     
 299         MODULE_STATE_UNFORMED,  
 300 };
 301 
 302 struct mod_tree_node {
 303         struct module *mod;
 304         struct latch_tree_node node;
 305 };
 306 
 307 struct module_layout {
 308         
 309         void *base;
 310         
 311         unsigned int size;
 312         
 313         unsigned int text_size;
 314         
 315         unsigned int ro_size;
 316         
 317         unsigned int ro_after_init_size;
 318 
 319 #ifdef CONFIG_MODULES_TREE_LOOKUP
 320         struct mod_tree_node mtn;
 321 #endif
 322 };
 323 
 324 #ifdef CONFIG_MODULES_TREE_LOOKUP
 325 
 326 #define __module_layout_align ____cacheline_aligned
 327 #else
 328 #define __module_layout_align
 329 #endif
 330 
 331 struct mod_kallsyms {
 332         Elf_Sym *symtab;
 333         unsigned int num_symtab;
 334         char *strtab;
 335         char *typetab;
 336 };
 337 
 338 #ifdef CONFIG_LIVEPATCH
 339 struct klp_modinfo {
 340         Elf_Ehdr hdr;
 341         Elf_Shdr *sechdrs;
 342         char *secstrings;
 343         unsigned int symndx;
 344 };
 345 #endif
 346 
 347 struct module {
 348         enum module_state state;
 349 
 350         
 351         struct list_head list;
 352 
 353         
 354         char name[MODULE_NAME_LEN];
 355 
 356         
 357         struct module_kobject mkobj;
 358         struct module_attribute *modinfo_attrs;
 359         const char *version;
 360         const char *srcversion;
 361         struct kobject *holders_dir;
 362 
 363         
 364         const struct kernel_symbol *syms;
 365         const s32 *crcs;
 366         unsigned int num_syms;
 367 
 368         
 369 #ifdef CONFIG_SYSFS
 370         struct mutex param_lock;
 371 #endif
 372         struct kernel_param *kp;
 373         unsigned int num_kp;
 374 
 375         
 376         unsigned int num_gpl_syms;
 377         const struct kernel_symbol *gpl_syms;
 378         const s32 *gpl_crcs;
 379 
 380 #ifdef CONFIG_UNUSED_SYMBOLS
 381         
 382         const struct kernel_symbol *unused_syms;
 383         const s32 *unused_crcs;
 384         unsigned int num_unused_syms;
 385 
 386         
 387         unsigned int num_unused_gpl_syms;
 388         const struct kernel_symbol *unused_gpl_syms;
 389         const s32 *unused_gpl_crcs;
 390 #endif
 391 
 392 #ifdef CONFIG_MODULE_SIG
 393         
 394         bool sig_ok;
 395 #endif
 396 
 397         bool async_probe_requested;
 398 
 399         
 400         const struct kernel_symbol *gpl_future_syms;
 401         const s32 *gpl_future_crcs;
 402         unsigned int num_gpl_future_syms;
 403 
 404         
 405         unsigned int num_exentries;
 406         struct exception_table_entry *extable;
 407 
 408         
 409         int (*init)(void);
 410 
 411         
 412         struct module_layout core_layout __module_layout_align;
 413         struct module_layout init_layout;
 414 
 415         
 416         struct mod_arch_specific arch;
 417 
 418         unsigned long taints;   
 419 
 420 #ifdef CONFIG_GENERIC_BUG
 421         
 422         unsigned num_bugs;
 423         struct list_head bug_list;
 424         struct bug_entry *bug_table;
 425 #endif
 426 
 427 #ifdef CONFIG_KALLSYMS
 428         
 429         struct mod_kallsyms *kallsyms;
 430         struct mod_kallsyms core_kallsyms;
 431 
 432         
 433         struct module_sect_attrs *sect_attrs;
 434 
 435         
 436         struct module_notes_attrs *notes_attrs;
 437 #endif
 438 
 439         
 440 
 441         char *args;
 442 
 443 #ifdef CONFIG_SMP
 444         
 445         void __percpu *percpu;
 446         unsigned int percpu_size;
 447 #endif
 448 
 449 #ifdef CONFIG_TRACEPOINTS
 450         unsigned int num_tracepoints;
 451         tracepoint_ptr_t *tracepoints_ptrs;
 452 #endif
 453 #ifdef CONFIG_TREE_SRCU
 454         unsigned int num_srcu_structs;
 455         struct srcu_struct **srcu_struct_ptrs;
 456 #endif
 457 #ifdef CONFIG_BPF_EVENTS
 458         unsigned int num_bpf_raw_events;
 459         struct bpf_raw_event_map *bpf_raw_events;
 460 #endif
 461 #ifdef CONFIG_JUMP_LABEL
 462         struct jump_entry *jump_entries;
 463         unsigned int num_jump_entries;
 464 #endif
 465 #ifdef CONFIG_TRACING
 466         unsigned int num_trace_bprintk_fmt;
 467         const char **trace_bprintk_fmt_start;
 468 #endif
 469 #ifdef CONFIG_EVENT_TRACING
 470         struct trace_event_call **trace_events;
 471         unsigned int num_trace_events;
 472         struct trace_eval_map **trace_evals;
 473         unsigned int num_trace_evals;
 474 #endif
 475 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
 476         unsigned int num_ftrace_callsites;
 477         unsigned long *ftrace_callsites;
 478 #endif
 479 
 480 #ifdef CONFIG_LIVEPATCH
 481         bool klp; 
 482         bool klp_alive;
 483 
 484         
 485         struct klp_modinfo *klp_info;
 486 #endif
 487 
 488 #ifdef CONFIG_MODULE_UNLOAD
 489         
 490         struct list_head source_list;
 491         
 492         struct list_head target_list;
 493 
 494         
 495         void (*exit)(void);
 496 
 497         atomic_t refcnt;
 498 #endif
 499 
 500 #ifdef CONFIG_CONSTRUCTORS
 501         
 502         ctor_fn_t *ctors;
 503         unsigned int num_ctors;
 504 #endif
 505 
 506 #ifdef CONFIG_FUNCTION_ERROR_INJECTION
 507         struct error_injection_entry *ei_funcs;
 508         unsigned int num_ei_funcs;
 509 #endif
 510 } ____cacheline_aligned __randomize_layout;
 511 #ifndef MODULE_ARCH_INIT
 512 #define MODULE_ARCH_INIT {}
 513 #endif
 514 
 515 #ifndef HAVE_ARCH_KALLSYMS_SYMBOL_VALUE
 516 static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym)
 517 {
 518         return sym->st_value;
 519 }
 520 #endif
 521 
 522 extern struct mutex module_mutex;
 523 
 524 
 525 
 526 
 527 static inline bool module_is_live(struct module *mod)
 528 {
 529         return mod->state != MODULE_STATE_GOING;
 530 }
 531 
 532 struct module *__module_text_address(unsigned long addr);
 533 struct module *__module_address(unsigned long addr);
 534 bool is_module_address(unsigned long addr);
 535 bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr);
 536 bool is_module_percpu_address(unsigned long addr);
 537 bool is_module_text_address(unsigned long addr);
 538 
 539 static inline bool within_module_core(unsigned long addr,
 540                                       const struct module *mod)
 541 {
 542         return (unsigned long)mod->core_layout.base <= addr &&
 543                addr < (unsigned long)mod->core_layout.base + mod->core_layout.size;
 544 }
 545 
 546 static inline bool within_module_init(unsigned long addr,
 547                                       const struct module *mod)
 548 {
 549         return (unsigned long)mod->init_layout.base <= addr &&
 550                addr < (unsigned long)mod->init_layout.base + mod->init_layout.size;
 551 }
 552 
 553 static inline bool within_module(unsigned long addr, const struct module *mod)
 554 {
 555         return within_module_init(addr, mod) || within_module_core(addr, mod);
 556 }
 557 
 558 
 559 struct module *find_module(const char *name);
 560 
 561 struct symsearch {
 562         const struct kernel_symbol *start, *stop;
 563         const s32 *crcs;
 564         enum {
 565                 NOT_GPL_ONLY,
 566                 GPL_ONLY,
 567                 WILL_BE_GPL_ONLY,
 568         } licence;
 569         bool unused;
 570 };
 571 
 572 
 573 
 574 
 575 
 576 
 577 const struct kernel_symbol *find_symbol(const char *name,
 578                                         struct module **owner,
 579                                         const s32 **crc,
 580                                         bool gplok,
 581                                         bool warn);
 582 
 583 
 584 
 585 
 586 
 587 
 588 bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
 589                                     struct module *owner,
 590                                     void *data), void *data);
 591 
 592 
 593 
 594 int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
 595                         char *name, char *module_name, int *exported);
 596 
 597 
 598 unsigned long module_kallsyms_lookup_name(const char *name);
 599 
 600 int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
 601                                              struct module *, unsigned long),
 602                                    void *data);
 603 
 604 extern void __noreturn __module_put_and_exit(struct module *mod,
 605                         long code);
 606 #define module_put_and_exit(code) __module_put_and_exit(THIS_MODULE, code)
 607 
 608 #ifdef CONFIG_MODULE_UNLOAD
 609 int module_refcount(struct module *mod);
 610 void __symbol_put(const char *symbol);
 611 #define symbol_put(x) __symbol_put(__stringify(x))
 612 void symbol_put_addr(void *addr);
 613 
 614 
 615 
 616 extern void __module_get(struct module *module);
 617 
 618 
 619 
 620 extern bool try_module_get(struct module *module);
 621 
 622 extern void module_put(struct module *module);
 623 
 624 #else 
 625 static inline bool try_module_get(struct module *module)
 626 {
 627         return !module || module_is_live(module);
 628 }
 629 static inline void module_put(struct module *module)
 630 {
 631 }
 632 static inline void __module_get(struct module *module)
 633 {
 634 }
 635 #define symbol_put(x) do { } while (0)
 636 #define symbol_put_addr(p) do { } while (0)
 637 
 638 #endif 
 639 int ref_module(struct module *a, struct module *b);
 640 
 641 
 642 #define module_name(mod)                        \
 643 ({                                              \
 644         struct module *__mod = (mod);           \
 645         __mod ? __mod->name : "kernel";         \
 646 })
 647 
 648 
 649 void *dereference_module_function_descriptor(struct module *mod, void *ptr);
 650 
 651 
 652 
 653 
 654 const char *module_address_lookup(unsigned long addr,
 655                             unsigned long *symbolsize,
 656                             unsigned long *offset,
 657                             char **modname,
 658                             char *namebuf);
 659 int lookup_module_symbol_name(unsigned long addr, char *symname);
 660 int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name);
 661 
 662 int register_module_notifier(struct notifier_block *nb);
 663 int unregister_module_notifier(struct notifier_block *nb);
 664 
 665 extern void print_modules(void);
 666 
 667 static inline bool module_requested_async_probing(struct module *module)
 668 {
 669         return module && module->async_probe_requested;
 670 }
 671 
 672 #ifdef CONFIG_LIVEPATCH
 673 static inline bool is_livepatch_module(struct module *mod)
 674 {
 675         return mod->klp;
 676 }
 677 #else 
 678 static inline bool is_livepatch_module(struct module *mod)
 679 {
 680         return false;
 681 }
 682 #endif 
 683 
 684 bool is_module_sig_enforced(void);
 685 void set_module_sig_enforced(void);
 686 
 687 #else 
 688 
 689 static inline struct module *__module_address(unsigned long addr)
 690 {
 691         return NULL;
 692 }
 693 
 694 static inline struct module *__module_text_address(unsigned long addr)
 695 {
 696         return NULL;
 697 }
 698 
 699 static inline bool is_module_address(unsigned long addr)
 700 {
 701         return false;
 702 }
 703 
 704 static inline bool is_module_percpu_address(unsigned long addr)
 705 {
 706         return false;
 707 }
 708 
 709 static inline bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr)
 710 {
 711         return false;
 712 }
 713 
 714 static inline bool is_module_text_address(unsigned long addr)
 715 {
 716         return false;
 717 }
 718 
 719 static inline bool within_module_core(unsigned long addr,
 720                                       const struct module *mod)
 721 {
 722         return false;
 723 }
 724 
 725 static inline bool within_module_init(unsigned long addr,
 726                                       const struct module *mod)
 727 {
 728         return false;
 729 }
 730 
 731 static inline bool within_module(unsigned long addr, const struct module *mod)
 732 {
 733         return false;
 734 }
 735 
 736 
 737 #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); })
 738 #define symbol_put(x) do { } while (0)
 739 #define symbol_put_addr(x) do { } while (0)
 740 
 741 static inline void __module_get(struct module *module)
 742 {
 743 }
 744 
 745 static inline bool try_module_get(struct module *module)
 746 {
 747         return true;
 748 }
 749 
 750 static inline void module_put(struct module *module)
 751 {
 752 }
 753 
 754 #define module_name(mod) "kernel"
 755 
 756 
 757 static inline const char *module_address_lookup(unsigned long addr,
 758                                           unsigned long *symbolsize,
 759                                           unsigned long *offset,
 760                                           char **modname,
 761                                           char *namebuf)
 762 {
 763         return NULL;
 764 }
 765 
 766 static inline int lookup_module_symbol_name(unsigned long addr, char *symname)
 767 {
 768         return -ERANGE;
 769 }
 770 
 771 static inline int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name)
 772 {
 773         return -ERANGE;
 774 }
 775 
 776 static inline int module_get_kallsym(unsigned int symnum, unsigned long *value,
 777                                         char *type, char *name,
 778                                         char *module_name, int *exported)
 779 {
 780         return -ERANGE;
 781 }
 782 
 783 static inline unsigned long module_kallsyms_lookup_name(const char *name)
 784 {
 785         return 0;
 786 }
 787 
 788 static inline int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
 789                                                            struct module *,
 790                                                            unsigned long),
 791                                                  void *data)
 792 {
 793         return 0;
 794 }
 795 
 796 static inline int register_module_notifier(struct notifier_block *nb)
 797 {
 798         
 799         return 0;
 800 }
 801 
 802 static inline int unregister_module_notifier(struct notifier_block *nb)
 803 {
 804         return 0;
 805 }
 806 
 807 #define module_put_and_exit(code) do_exit(code)
 808 
 809 static inline void print_modules(void)
 810 {
 811 }
 812 
 813 static inline bool module_requested_async_probing(struct module *module)
 814 {
 815         return false;
 816 }
 817 
 818 static inline bool is_module_sig_enforced(void)
 819 {
 820         return false;
 821 }
 822 
 823 static inline void set_module_sig_enforced(void)
 824 {
 825 }
 826 
 827 
 828 static inline
 829 void *dereference_module_function_descriptor(struct module *mod, void *ptr)
 830 {
 831         return ptr;
 832 }
 833 
 834 #endif 
 835 
 836 #ifdef CONFIG_SYSFS
 837 extern struct kset *module_kset;
 838 extern struct kobj_type module_ktype;
 839 extern int module_sysfs_initialized;
 840 #endif 
 841 
 842 #define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x)
 843 
 844 
 845 
 846 #define __MODULE_STRING(x) __stringify(x)
 847 
 848 #ifdef CONFIG_STRICT_MODULE_RWX
 849 extern void set_all_modules_text_rw(void);
 850 extern void set_all_modules_text_ro(void);
 851 extern void module_enable_ro(const struct module *mod, bool after_init);
 852 extern void module_disable_ro(const struct module *mod);
 853 #else
 854 static inline void set_all_modules_text_rw(void) { }
 855 static inline void set_all_modules_text_ro(void) { }
 856 static inline void module_enable_ro(const struct module *mod, bool after_init) { }
 857 static inline void module_disable_ro(const struct module *mod) { }
 858 #endif
 859 
 860 #ifdef CONFIG_GENERIC_BUG
 861 void module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *,
 862                          struct module *);
 863 void module_bug_cleanup(struct module *);
 864 
 865 #else   
 866 
 867 static inline void module_bug_finalize(const Elf_Ehdr *hdr,
 868                                         const Elf_Shdr *sechdrs,
 869                                         struct module *mod)
 870 {
 871 }
 872 static inline void module_bug_cleanup(struct module *mod) {}
 873 #endif  
 874 
 875 #ifdef CONFIG_RETPOLINE
 876 extern bool retpoline_module_ok(bool has_retpoline);
 877 #else
 878 static inline bool retpoline_module_ok(bool has_retpoline)
 879 {
 880         return true;
 881 }
 882 #endif
 883 
 884 #ifdef CONFIG_MODULE_SIG
 885 static inline bool module_sig_ok(struct module *module)
 886 {
 887         return module->sig_ok;
 888 }
 889 #else   
 890 static inline bool module_sig_ok(struct module *module)
 891 {
 892         return true;
 893 }
 894 #endif  
 895 
 896 #endif