at v5.3-rc6 25 kB view raw
1#ifndef _LINUX_MODULE_H 2#define _LINUX_MODULE_H 3/* 4 * Dynamic loading of modules into the kernel. 5 * 6 * Rewritten by Richard Henderson <rth@tamu.edu> Dec 1996 7 * Rewritten again by Rusty Russell, 2002 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/* In stripped ARM and x86-64 modules, ~ is surprisingly rare. */ 30#define MODULE_SIG_STRING "~Module signature appended~\n" 31 32/* Not Yet Implemented */ 33#define MODULE_SUPPORTED_DEVICE(name) 34 35#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN 36 37struct modversion_info { 38 unsigned long crc; 39 char name[MODULE_NAME_LEN]; 40}; 41 42struct module; 43struct exception_table_entry; 44 45struct module_kobject { 46 struct kobject kobj; 47 struct module *mod; 48 struct kobject *drivers_dir; 49 struct module_param_attrs *mp; 50 struct completion *kobj_completion; 51} __randomize_layout; 52 53struct module_attribute { 54 struct attribute attr; 55 ssize_t (*show)(struct module_attribute *, struct module_kobject *, 56 char *); 57 ssize_t (*store)(struct module_attribute *, struct module_kobject *, 58 const char *, size_t count); 59 void (*setup)(struct module *, const char *); 60 int (*test)(struct module *); 61 void (*free)(struct module *); 62}; 63 64struct module_version_attribute { 65 struct module_attribute mattr; 66 const char *module_name; 67 const char *version; 68} __attribute__ ((__aligned__(sizeof(void *)))); 69 70extern ssize_t __modver_version_show(struct module_attribute *, 71 struct module_kobject *, char *); 72 73extern struct module_attribute module_uevent; 74 75/* These are either module local, or the kernel's dummy ones. */ 76extern int init_module(void); 77extern void cleanup_module(void); 78 79#ifndef MODULE 80/** 81 * module_init() - driver initialization entry point 82 * @x: function to be run at kernel boot time or module insertion 83 * 84 * module_init() will either be called during do_initcalls() (if 85 * builtin) or at module insertion time (if a module). There can only 86 * be one per module. 87 */ 88#define module_init(x) __initcall(x); 89 90/** 91 * module_exit() - driver exit entry point 92 * @x: function to be run when driver is removed 93 * 94 * module_exit() will wrap the driver clean-up code 95 * with cleanup_module() when used with rmmod when 96 * the driver is a module. If the driver is statically 97 * compiled into the kernel, module_exit() has no effect. 98 * There can only be one per module. 99 */ 100#define module_exit(x) __exitcall(x); 101 102#else /* MODULE */ 103 104/* 105 * In most cases loadable modules do not need custom 106 * initcall levels. There are still some valid cases where 107 * a driver may be needed early if built in, and does not 108 * matter when built as a loadable module. Like bus 109 * snooping debug drivers. 110 */ 111#define early_initcall(fn) module_init(fn) 112#define core_initcall(fn) module_init(fn) 113#define core_initcall_sync(fn) module_init(fn) 114#define postcore_initcall(fn) module_init(fn) 115#define postcore_initcall_sync(fn) module_init(fn) 116#define arch_initcall(fn) module_init(fn) 117#define subsys_initcall(fn) module_init(fn) 118#define subsys_initcall_sync(fn) module_init(fn) 119#define fs_initcall(fn) module_init(fn) 120#define fs_initcall_sync(fn) module_init(fn) 121#define rootfs_initcall(fn) module_init(fn) 122#define device_initcall(fn) module_init(fn) 123#define device_initcall_sync(fn) module_init(fn) 124#define late_initcall(fn) module_init(fn) 125#define late_initcall_sync(fn) module_init(fn) 126 127#define console_initcall(fn) module_init(fn) 128 129/* Each module must use one module_init(). */ 130#define module_init(initfn) \ 131 static inline initcall_t __maybe_unused __inittest(void) \ 132 { return initfn; } \ 133 int init_module(void) __copy(initfn) __attribute__((alias(#initfn))); 134 135/* This is only required if you want to be unloadable. */ 136#define module_exit(exitfn) \ 137 static inline exitcall_t __maybe_unused __exittest(void) \ 138 { return exitfn; } \ 139 void cleanup_module(void) __copy(exitfn) __attribute__((alias(#exitfn))); 140 141#endif 142 143/* This means "can be init if no module support, otherwise module load 144 may call it." */ 145#ifdef CONFIG_MODULES 146#define __init_or_module 147#define __initdata_or_module 148#define __initconst_or_module 149#define __INIT_OR_MODULE .text 150#define __INITDATA_OR_MODULE .data 151#define __INITRODATA_OR_MODULE .section ".rodata","a",%progbits 152#else 153#define __init_or_module __init 154#define __initdata_or_module __initdata 155#define __initconst_or_module __initconst 156#define __INIT_OR_MODULE __INIT 157#define __INITDATA_OR_MODULE __INITDATA 158#define __INITRODATA_OR_MODULE __INITRODATA 159#endif /*CONFIG_MODULES*/ 160 161/* Generic info of form tag = "info" */ 162#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) 163 164/* For userspace: you can also call me... */ 165#define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) 166 167/* Soft module dependencies. See man modprobe.d for details. 168 * Example: MODULE_SOFTDEP("pre: module-foo module-bar post: module-baz") 169 */ 170#define MODULE_SOFTDEP(_softdep) MODULE_INFO(softdep, _softdep) 171 172/* 173 * The following license idents are currently accepted as indicating free 174 * software modules 175 * 176 * "GPL" [GNU Public License v2] 177 * "GPL v2" [GNU Public License v2] 178 * "GPL and additional rights" [GNU Public License v2 rights and more] 179 * "Dual BSD/GPL" [GNU Public License v2 180 * or BSD license choice] 181 * "Dual MIT/GPL" [GNU Public License v2 182 * or MIT license choice] 183 * "Dual MPL/GPL" [GNU Public License v2 184 * or Mozilla license choice] 185 * 186 * The following other idents are available 187 * 188 * "Proprietary" [Non free products] 189 * 190 * Both "GPL v2" and "GPL" (the latter also in dual licensed strings) are 191 * merely stating that the module is licensed under the GPL v2, but are not 192 * telling whether "GPL v2 only" or "GPL v2 or later". The reason why there 193 * are two variants is a historic and failed attempt to convey more 194 * information in the MODULE_LICENSE string. For module loading the 195 * "only/or later" distinction is completely irrelevant and does neither 196 * replace the proper license identifiers in the corresponding source file 197 * nor amends them in any way. The sole purpose is to make the 198 * 'Proprietary' flagging work and to refuse to bind symbols which are 199 * exported with EXPORT_SYMBOL_GPL when a non free module is loaded. 200 * 201 * In the same way "BSD" is not a clear license information. It merely 202 * states, that the module is licensed under one of the compatible BSD 203 * license variants. The detailed and correct license information is again 204 * to be found in the corresponding source files. 205 * 206 * There are dual licensed components, but when running with Linux it is the 207 * GPL that is relevant so this is a non issue. Similarly LGPL linked with GPL 208 * is a GPL combined work. 209 * 210 * This exists for several reasons 211 * 1. So modinfo can show license info for users wanting to vet their setup 212 * is free 213 * 2. So the community can ignore bug reports including proprietary modules 214 * 3. So vendors can do likewise based on their own policies 215 */ 216#define MODULE_LICENSE(_license) MODULE_INFO(license, _license) 217 218/* 219 * Author(s), use "Name <email>" or just "Name", for multiple 220 * authors use multiple MODULE_AUTHOR() statements/lines. 221 */ 222#define MODULE_AUTHOR(_author) MODULE_INFO(author, _author) 223 224/* What your module does. */ 225#define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) 226 227#ifdef MODULE 228/* Creates an alias so file2alias.c can find device table. */ 229#define MODULE_DEVICE_TABLE(type, name) \ 230extern typeof(name) __mod_##type##__##name##_device_table \ 231 __attribute__ ((unused, alias(__stringify(name)))) 232#else /* !MODULE */ 233#define MODULE_DEVICE_TABLE(type, name) 234#endif 235 236/* Version of form [<epoch>:]<version>[-<extra-version>]. 237 * Or for CVS/RCS ID version, everything but the number is stripped. 238 * <epoch>: A (small) unsigned integer which allows you to start versions 239 * anew. If not mentioned, it's zero. eg. "2:1.0" is after 240 * "1:2.0". 241 242 * <version>: The <version> may contain only alphanumerics and the 243 * character `.'. Ordered by numeric sort for numeric parts, 244 * ascii sort for ascii parts (as per RPM or DEB algorithm). 245 246 * <extraversion>: Like <version>, but inserted for local 247 * customizations, eg "rh3" or "rusty1". 248 249 * Using this automatically adds a checksum of the .c files and the 250 * local headers in "srcversion". 251 */ 252 253#if defined(MODULE) || !defined(CONFIG_SYSFS) 254#define MODULE_VERSION(_version) MODULE_INFO(version, _version) 255#else 256#define MODULE_VERSION(_version) \ 257 MODULE_INFO(version, _version); \ 258 static struct module_version_attribute ___modver_attr = { \ 259 .mattr = { \ 260 .attr = { \ 261 .name = "version", \ 262 .mode = S_IRUGO, \ 263 }, \ 264 .show = __modver_version_show, \ 265 }, \ 266 .module_name = KBUILD_MODNAME, \ 267 .version = _version, \ 268 }; \ 269 static const struct module_version_attribute \ 270 __used __attribute__ ((__section__ ("__modver"))) \ 271 * __moduleparam_const __modver_attr = &___modver_attr 272#endif 273 274/* Optional firmware file (or files) needed by the module 275 * format is simply firmware file name. Multiple firmware 276 * files require multiple MODULE_FIRMWARE() specifiers */ 277#define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware) 278 279struct notifier_block; 280 281#ifdef CONFIG_MODULES 282 283extern int modules_disabled; /* for sysctl */ 284/* Get/put a kernel symbol (calls must be symmetric) */ 285void *__symbol_get(const char *symbol); 286void *__symbol_get_gpl(const char *symbol); 287#define symbol_get(x) ((typeof(&x))(__symbol_get(__stringify(x)))) 288 289/* modules using other modules: kdb wants to see this. */ 290struct module_use { 291 struct list_head source_list; 292 struct list_head target_list; 293 struct module *source, *target; 294}; 295 296enum module_state { 297 MODULE_STATE_LIVE, /* Normal state. */ 298 MODULE_STATE_COMING, /* Full formed, running module_init. */ 299 MODULE_STATE_GOING, /* Going away. */ 300 MODULE_STATE_UNFORMED, /* Still setting it up. */ 301}; 302 303struct mod_tree_node { 304 struct module *mod; 305 struct latch_tree_node node; 306}; 307 308struct module_layout { 309 /* The actual code + data. */ 310 void *base; 311 /* Total size. */ 312 unsigned int size; 313 /* The size of the executable code. */ 314 unsigned int text_size; 315 /* Size of RO section of the module (text+rodata) */ 316 unsigned int ro_size; 317 /* Size of RO after init section */ 318 unsigned int ro_after_init_size; 319 320#ifdef CONFIG_MODULES_TREE_LOOKUP 321 struct mod_tree_node mtn; 322#endif 323}; 324 325#ifdef CONFIG_MODULES_TREE_LOOKUP 326/* Only touch one cacheline for common rbtree-for-core-layout case. */ 327#define __module_layout_align ____cacheline_aligned 328#else 329#define __module_layout_align 330#endif 331 332struct mod_kallsyms { 333 Elf_Sym *symtab; 334 unsigned int num_symtab; 335 char *strtab; 336 char *typetab; 337}; 338 339#ifdef CONFIG_LIVEPATCH 340struct klp_modinfo { 341 Elf_Ehdr hdr; 342 Elf_Shdr *sechdrs; 343 char *secstrings; 344 unsigned int symndx; 345}; 346#endif 347 348struct module { 349 enum module_state state; 350 351 /* Member of list of modules */ 352 struct list_head list; 353 354 /* Unique handle for this module */ 355 char name[MODULE_NAME_LEN]; 356 357 /* Sysfs stuff. */ 358 struct module_kobject mkobj; 359 struct module_attribute *modinfo_attrs; 360 const char *version; 361 const char *srcversion; 362 struct kobject *holders_dir; 363 364 /* Exported symbols */ 365 const struct kernel_symbol *syms; 366 const s32 *crcs; 367 unsigned int num_syms; 368 369 /* Kernel parameters. */ 370#ifdef CONFIG_SYSFS 371 struct mutex param_lock; 372#endif 373 struct kernel_param *kp; 374 unsigned int num_kp; 375 376 /* GPL-only exported symbols. */ 377 unsigned int num_gpl_syms; 378 const struct kernel_symbol *gpl_syms; 379 const s32 *gpl_crcs; 380 381#ifdef CONFIG_UNUSED_SYMBOLS 382 /* unused exported symbols. */ 383 const struct kernel_symbol *unused_syms; 384 const s32 *unused_crcs; 385 unsigned int num_unused_syms; 386 387 /* GPL-only, unused exported symbols. */ 388 unsigned int num_unused_gpl_syms; 389 const struct kernel_symbol *unused_gpl_syms; 390 const s32 *unused_gpl_crcs; 391#endif 392 393#ifdef CONFIG_MODULE_SIG 394 /* Signature was verified. */ 395 bool sig_ok; 396#endif 397 398 bool async_probe_requested; 399 400 /* symbols that will be GPL-only in the near future. */ 401 const struct kernel_symbol *gpl_future_syms; 402 const s32 *gpl_future_crcs; 403 unsigned int num_gpl_future_syms; 404 405 /* Exception table */ 406 unsigned int num_exentries; 407 struct exception_table_entry *extable; 408 409 /* Startup function. */ 410 int (*init)(void); 411 412 /* Core layout: rbtree is accessed frequently, so keep together. */ 413 struct module_layout core_layout __module_layout_align; 414 struct module_layout init_layout; 415 416 /* Arch-specific module values */ 417 struct mod_arch_specific arch; 418 419 unsigned long taints; /* same bits as kernel:taint_flags */ 420 421#ifdef CONFIG_GENERIC_BUG 422 /* Support for BUG */ 423 unsigned num_bugs; 424 struct list_head bug_list; 425 struct bug_entry *bug_table; 426#endif 427 428#ifdef CONFIG_KALLSYMS 429 /* Protected by RCU and/or module_mutex: use rcu_dereference() */ 430 struct mod_kallsyms *kallsyms; 431 struct mod_kallsyms core_kallsyms; 432 433 /* Section attributes */ 434 struct module_sect_attrs *sect_attrs; 435 436 /* Notes attributes */ 437 struct module_notes_attrs *notes_attrs; 438#endif 439 440 /* The command line arguments (may be mangled). People like 441 keeping pointers to this stuff */ 442 char *args; 443 444#ifdef CONFIG_SMP 445 /* Per-cpu data. */ 446 void __percpu *percpu; 447 unsigned int percpu_size; 448#endif 449 450#ifdef CONFIG_TRACEPOINTS 451 unsigned int num_tracepoints; 452 tracepoint_ptr_t *tracepoints_ptrs; 453#endif 454#ifdef CONFIG_TREE_SRCU 455 unsigned int num_srcu_structs; 456 struct srcu_struct **srcu_struct_ptrs; 457#endif 458#ifdef CONFIG_BPF_EVENTS 459 unsigned int num_bpf_raw_events; 460 struct bpf_raw_event_map *bpf_raw_events; 461#endif 462#ifdef CONFIG_JUMP_LABEL 463 struct jump_entry *jump_entries; 464 unsigned int num_jump_entries; 465#endif 466#ifdef CONFIG_TRACING 467 unsigned int num_trace_bprintk_fmt; 468 const char **trace_bprintk_fmt_start; 469#endif 470#ifdef CONFIG_EVENT_TRACING 471 struct trace_event_call **trace_events; 472 unsigned int num_trace_events; 473 struct trace_eval_map **trace_evals; 474 unsigned int num_trace_evals; 475#endif 476#ifdef CONFIG_FTRACE_MCOUNT_RECORD 477 unsigned int num_ftrace_callsites; 478 unsigned long *ftrace_callsites; 479#endif 480 481#ifdef CONFIG_LIVEPATCH 482 bool klp; /* Is this a livepatch module? */ 483 bool klp_alive; 484 485 /* Elf information */ 486 struct klp_modinfo *klp_info; 487#endif 488 489#ifdef CONFIG_MODULE_UNLOAD 490 /* What modules depend on me? */ 491 struct list_head source_list; 492 /* What modules do I depend on? */ 493 struct list_head target_list; 494 495 /* Destruction function. */ 496 void (*exit)(void); 497 498 atomic_t refcnt; 499#endif 500 501#ifdef CONFIG_CONSTRUCTORS 502 /* Constructor functions. */ 503 ctor_fn_t *ctors; 504 unsigned int num_ctors; 505#endif 506 507#ifdef CONFIG_FUNCTION_ERROR_INJECTION 508 struct error_injection_entry *ei_funcs; 509 unsigned int num_ei_funcs; 510#endif 511} ____cacheline_aligned __randomize_layout; 512#ifndef MODULE_ARCH_INIT 513#define MODULE_ARCH_INIT {} 514#endif 515 516#ifndef HAVE_ARCH_KALLSYMS_SYMBOL_VALUE 517static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym) 518{ 519 return sym->st_value; 520} 521#endif 522 523extern struct mutex module_mutex; 524 525/* FIXME: It'd be nice to isolate modules during init, too, so they 526 aren't used before they (may) fail. But presently too much code 527 (IDE & SCSI) require entry into the module during init.*/ 528static inline bool module_is_live(struct module *mod) 529{ 530 return mod->state != MODULE_STATE_GOING; 531} 532 533struct module *__module_text_address(unsigned long addr); 534struct module *__module_address(unsigned long addr); 535bool is_module_address(unsigned long addr); 536bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr); 537bool is_module_percpu_address(unsigned long addr); 538bool is_module_text_address(unsigned long addr); 539 540static inline bool within_module_core(unsigned long addr, 541 const struct module *mod) 542{ 543 return (unsigned long)mod->core_layout.base <= addr && 544 addr < (unsigned long)mod->core_layout.base + mod->core_layout.size; 545} 546 547static inline bool within_module_init(unsigned long addr, 548 const struct module *mod) 549{ 550 return (unsigned long)mod->init_layout.base <= addr && 551 addr < (unsigned long)mod->init_layout.base + mod->init_layout.size; 552} 553 554static inline bool within_module(unsigned long addr, const struct module *mod) 555{ 556 return within_module_init(addr, mod) || within_module_core(addr, mod); 557} 558 559/* Search for module by name: must hold module_mutex. */ 560struct module *find_module(const char *name); 561 562struct symsearch { 563 const struct kernel_symbol *start, *stop; 564 const s32 *crcs; 565 enum { 566 NOT_GPL_ONLY, 567 GPL_ONLY, 568 WILL_BE_GPL_ONLY, 569 } licence; 570 bool unused; 571}; 572 573/* 574 * Search for an exported symbol by name. 575 * 576 * Must be called with module_mutex held or preemption disabled. 577 */ 578const struct kernel_symbol *find_symbol(const char *name, 579 struct module **owner, 580 const s32 **crc, 581 bool gplok, 582 bool warn); 583 584/* 585 * Walk the exported symbol table 586 * 587 * Must be called with module_mutex held or preemption disabled. 588 */ 589bool each_symbol_section(bool (*fn)(const struct symsearch *arr, 590 struct module *owner, 591 void *data), void *data); 592 593/* Returns 0 and fills in value, defined and namebuf, or -ERANGE if 594 symnum out of range. */ 595int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, 596 char *name, char *module_name, int *exported); 597 598/* Look for this name: can be of form module:name. */ 599unsigned long module_kallsyms_lookup_name(const char *name); 600 601int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, 602 struct module *, unsigned long), 603 void *data); 604 605extern void __noreturn __module_put_and_exit(struct module *mod, 606 long code); 607#define module_put_and_exit(code) __module_put_and_exit(THIS_MODULE, code) 608 609#ifdef CONFIG_MODULE_UNLOAD 610int module_refcount(struct module *mod); 611void __symbol_put(const char *symbol); 612#define symbol_put(x) __symbol_put(__stringify(x)) 613void symbol_put_addr(void *addr); 614 615/* Sometimes we know we already have a refcount, and it's easier not 616 to handle the error case (which only happens with rmmod --wait). */ 617extern void __module_get(struct module *module); 618 619/* This is the Right Way to get a module: if it fails, it's being removed, 620 * so pretend it's not there. */ 621extern bool try_module_get(struct module *module); 622 623extern void module_put(struct module *module); 624 625#else /*!CONFIG_MODULE_UNLOAD*/ 626static inline bool try_module_get(struct module *module) 627{ 628 return !module || module_is_live(module); 629} 630static inline void module_put(struct module *module) 631{ 632} 633static inline void __module_get(struct module *module) 634{ 635} 636#define symbol_put(x) do { } while (0) 637#define symbol_put_addr(p) do { } while (0) 638 639#endif /* CONFIG_MODULE_UNLOAD */ 640int ref_module(struct module *a, struct module *b); 641 642/* This is a #define so the string doesn't get put in every .o file */ 643#define module_name(mod) \ 644({ \ 645 struct module *__mod = (mod); \ 646 __mod ? __mod->name : "kernel"; \ 647}) 648 649/* Dereference module function descriptor */ 650void *dereference_module_function_descriptor(struct module *mod, void *ptr); 651 652/* For kallsyms to ask for address resolution. namebuf should be at 653 * least KSYM_NAME_LEN long: a pointer to namebuf is returned if 654 * found, otherwise NULL. */ 655const char *module_address_lookup(unsigned long addr, 656 unsigned long *symbolsize, 657 unsigned long *offset, 658 char **modname, 659 char *namebuf); 660int lookup_module_symbol_name(unsigned long addr, char *symname); 661int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); 662 663int register_module_notifier(struct notifier_block *nb); 664int unregister_module_notifier(struct notifier_block *nb); 665 666extern void print_modules(void); 667 668static inline bool module_requested_async_probing(struct module *module) 669{ 670 return module && module->async_probe_requested; 671} 672 673#ifdef CONFIG_LIVEPATCH 674static inline bool is_livepatch_module(struct module *mod) 675{ 676 return mod->klp; 677} 678#else /* !CONFIG_LIVEPATCH */ 679static inline bool is_livepatch_module(struct module *mod) 680{ 681 return false; 682} 683#endif /* CONFIG_LIVEPATCH */ 684 685bool is_module_sig_enforced(void); 686void set_module_sig_enforced(void); 687 688#else /* !CONFIG_MODULES... */ 689 690static inline struct module *__module_address(unsigned long addr) 691{ 692 return NULL; 693} 694 695static inline struct module *__module_text_address(unsigned long addr) 696{ 697 return NULL; 698} 699 700static inline bool is_module_address(unsigned long addr) 701{ 702 return false; 703} 704 705static inline bool is_module_percpu_address(unsigned long addr) 706{ 707 return false; 708} 709 710static inline bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr) 711{ 712 return false; 713} 714 715static inline bool is_module_text_address(unsigned long addr) 716{ 717 return false; 718} 719 720static inline bool within_module_core(unsigned long addr, 721 const struct module *mod) 722{ 723 return false; 724} 725 726static inline bool within_module_init(unsigned long addr, 727 const struct module *mod) 728{ 729 return false; 730} 731 732static inline bool within_module(unsigned long addr, const struct module *mod) 733{ 734 return false; 735} 736 737/* Get/put a kernel symbol (calls should be symmetric) */ 738#define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) 739#define symbol_put(x) do { } while (0) 740#define symbol_put_addr(x) do { } while (0) 741 742static inline void __module_get(struct module *module) 743{ 744} 745 746static inline bool try_module_get(struct module *module) 747{ 748 return true; 749} 750 751static inline void module_put(struct module *module) 752{ 753} 754 755#define module_name(mod) "kernel" 756 757/* For kallsyms to ask for address resolution. NULL means not found. */ 758static inline const char *module_address_lookup(unsigned long addr, 759 unsigned long *symbolsize, 760 unsigned long *offset, 761 char **modname, 762 char *namebuf) 763{ 764 return NULL; 765} 766 767static inline int lookup_module_symbol_name(unsigned long addr, char *symname) 768{ 769 return -ERANGE; 770} 771 772static inline int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name) 773{ 774 return -ERANGE; 775} 776 777static inline int module_get_kallsym(unsigned int symnum, unsigned long *value, 778 char *type, char *name, 779 char *module_name, int *exported) 780{ 781 return -ERANGE; 782} 783 784static inline unsigned long module_kallsyms_lookup_name(const char *name) 785{ 786 return 0; 787} 788 789static inline int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, 790 struct module *, 791 unsigned long), 792 void *data) 793{ 794 return 0; 795} 796 797static inline int register_module_notifier(struct notifier_block *nb) 798{ 799 /* no events will happen anyway, so this can always succeed */ 800 return 0; 801} 802 803static inline int unregister_module_notifier(struct notifier_block *nb) 804{ 805 return 0; 806} 807 808#define module_put_and_exit(code) do_exit(code) 809 810static inline void print_modules(void) 811{ 812} 813 814static inline bool module_requested_async_probing(struct module *module) 815{ 816 return false; 817} 818 819static inline bool is_module_sig_enforced(void) 820{ 821 return false; 822} 823 824static inline void set_module_sig_enforced(void) 825{ 826} 827 828/* Dereference module function descriptor */ 829static inline 830void *dereference_module_function_descriptor(struct module *mod, void *ptr) 831{ 832 return ptr; 833} 834 835#endif /* CONFIG_MODULES */ 836 837#ifdef CONFIG_SYSFS 838extern struct kset *module_kset; 839extern struct kobj_type module_ktype; 840extern int module_sysfs_initialized; 841#endif /* CONFIG_SYSFS */ 842 843#define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x) 844 845/* BELOW HERE ALL THESE ARE OBSOLETE AND WILL VANISH */ 846 847#define __MODULE_STRING(x) __stringify(x) 848 849#ifdef CONFIG_STRICT_MODULE_RWX 850extern void set_all_modules_text_rw(void); 851extern void set_all_modules_text_ro(void); 852extern void module_enable_ro(const struct module *mod, bool after_init); 853extern void module_disable_ro(const struct module *mod); 854#else 855static inline void set_all_modules_text_rw(void) { } 856static inline void set_all_modules_text_ro(void) { } 857static inline void module_enable_ro(const struct module *mod, bool after_init) { } 858static inline void module_disable_ro(const struct module *mod) { } 859#endif 860 861#ifdef CONFIG_GENERIC_BUG 862void module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *, 863 struct module *); 864void module_bug_cleanup(struct module *); 865 866#else /* !CONFIG_GENERIC_BUG */ 867 868static inline void module_bug_finalize(const Elf_Ehdr *hdr, 869 const Elf_Shdr *sechdrs, 870 struct module *mod) 871{ 872} 873static inline void module_bug_cleanup(struct module *mod) {} 874#endif /* CONFIG_GENERIC_BUG */ 875 876#ifdef CONFIG_RETPOLINE 877extern bool retpoline_module_ok(bool has_retpoline); 878#else 879static inline bool retpoline_module_ok(bool has_retpoline) 880{ 881 return true; 882} 883#endif 884 885#ifdef CONFIG_MODULE_SIG 886static inline bool module_sig_ok(struct module *module) 887{ 888 return module->sig_ok; 889} 890#else /* !CONFIG_MODULE_SIG */ 891static inline bool module_sig_ok(struct module *module) 892{ 893 return true; 894} 895#endif /* CONFIG_MODULE_SIG */ 896 897#endif /* _LINUX_MODULE_H */