diff options
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/kernel/module.c b/kernel/module.c index 1c5cff34d9f2..c075a18103fb 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -3275,6 +3275,11 @@ static int find_module_sections(struct module *mod, struct load_info *info)  						sizeof(unsigned long),  						&mod->num_kprobe_blacklist);  #endif +#ifdef CONFIG_HAVE_STATIC_CALL_INLINE +	mod->static_call_sites = section_objs(info, ".static_call_sites", +					      sizeof(*mod->static_call_sites), +					      &mod->num_static_call_sites); +#endif  	mod->extable = section_objs(info, "__ex_table",  				    sizeof(*mod->extable), &mod->num_exentries); @@ -3792,9 +3797,13 @@ static int prepare_coming_module(struct module *mod)  	if (err)  		return err; -	blocking_notifier_call_chain(&module_notify_list, -				     MODULE_STATE_COMING, mod); -	return 0; +	err = blocking_notifier_call_chain_robust(&module_notify_list, +			MODULE_STATE_COMING, MODULE_STATE_GOING, mod); +	err = notifier_to_errno(err); +	if (err) +		klp_module_going(mod); + +	return err;  }  static int unknown_module_param_cb(char *param, char *val, const char *modname, |