Function report |
Source Code:kernel\module.c |
Create Date:2022-07-28 10:59:22 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Allocate and load the module: note that size of section 0 is alwayszero, and we rely on this for optional sections.
Proto:static int load_module(struct load_info *info, const char __user *uargs, int flags)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
struct load_info * | info | |
const char __user * | uargs | |
int | flags |
3789 | err = 0 |
3800 | If blacklisted(name) Then |
3805 | err = module_sig_check(info, flags) |
3809 | err = rewrite_section_headers(info, flags) |
3820 | mod = layout_and_allocate(info, flags) |
3829 | err = We try to place it in the list now to make sure it's unique before* we dedicate too many resources. In particular, temporary percpu* memory exhaustion. |
3830 | If err Then Go to free_module |
3844 | err = percpu_modalloc(mod, info) |
3845 | If err Then Go to unlink_mod |
3849 | err = module_unload_init(mod) |
3850 | If err Then Go to unlink_mod |
3853 | init_param_lock(mod) |
3857 | err = find_module_sections(mod, info) |
3858 | If err Then Go to free_unload |
3861 | err = check_module_license_and_versions(mod) |
3862 | If err Then Go to free_unload |
3866 | setup_modinfo(mod, info) |
3870 | If err < 0 Then Go to free_modinfo |
3873 | err = apply_relocations(mod, info) |
3874 | If err < 0 Then Go to free_modinfo |
3877 | err = post_relocation(mod, info) |
3878 | If err < 0 Then Go to free_modinfo |
3881 | flush_module_icache(mod) |
3884 | The command line arguments (may be mangled). People like keeping pointers to this stuff = We don't want strings.h stuff being used by user stuff by accident |
3886 | err = PTR_ERR( The command line arguments (may be mangled). People like keeping pointers to this stuff ) |
3887 | Go to free_arch_cleanup |
3890 | dynamic_debug_setup(mod, debug, num_debug) |
3893 | ftrace_module_init(mod) |
3896 | err = complete_formation(mod, info) |
3897 | If err Then Go to ddebug_cleanup |
3900 | err = prepare_coming_module(mod) |
3901 | If err Then Go to bug_cleanup |
3908 | If IS_ERR(after_dashes) Then |
3909 | err = PTR_ERR(after_dashes) |
3910 | Go to coming_cleanup |
3911 | Else if after_dashes Then |
3912 | pr_warn("%s: parameters '%s' after `--' ignored\n", Unique handle for this module , after_dashes) |
3918 | If err < 0 Then Go to coming_cleanup |
3921 | If is_livepatch_module(mod) Then |
3922 | err = Persist Elf information about a module. Copy the Elf header,* section header table, section string table, and symtab section* index from info to mod->klp_info. |
3923 | If err < 0 Then Go to sysfs_cleanup |
3931 | trace_module_load(mod) |
3935 | sysfs_cleanup : |
3936 | mod_sysfs_teardown(mod) |
3937 | coming_cleanup : |
3938 | state = Going away. |
3939 | destroy_params(kp, num_kp) |
3940 | blocking_notifier_call_chain( & module_notify_list, Going away. , mod) |
3942 | klp_module_going(mod) |
3943 | bug_cleanup : |
3946 | module_bug_cleanup(mod) |
3949 | ddebug_cleanup : |
3950 | ftrace_release_mod(mod) |
3951 | dynamic_debug_remove(mod, debug) |
3953 | kfree( The command line arguments (may be mangled). People like keeping pointers to this stuff ) |
3954 | free_arch_cleanup : |
3955 | module_arch_cleanup(mod) |
3956 | free_modinfo : |
3957 | free_modinfo(mod) |
3958 | free_unload : |
3959 | module_unload_free(mod) |
3960 | unlink_mod : |
3964 | mod_tree_remove(mod) |
3969 | free_module : |
3974 | free_copy : |
3976 | Return err |
Name | Describe |
---|---|
SYSCALL_DEFINE3 | |
SYSCALL_DEFINE3 |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |