diff options
Diffstat (limited to 'kernel/module.c')
-rw-r--r-- | kernel/module.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c index 9537da37ce87..794ebe8e878d 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -984,6 +984,8 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user, | |||
984 | mod->exit(); | 984 | mod->exit(); |
985 | blocking_notifier_call_chain(&module_notify_list, | 985 | blocking_notifier_call_chain(&module_notify_list, |
986 | MODULE_STATE_GOING, mod); | 986 | MODULE_STATE_GOING, mod); |
987 | ftrace_release_mod(mod); | ||
988 | |||
987 | async_synchronize_full(); | 989 | async_synchronize_full(); |
988 | 990 | ||
989 | /* Store the name of the last unloaded module for diagnostic purposes */ | 991 | /* Store the name of the last unloaded module for diagnostic purposes */ |
@@ -3313,6 +3315,7 @@ fail: | |||
3313 | module_put(mod); | 3315 | module_put(mod); |
3314 | blocking_notifier_call_chain(&module_notify_list, | 3316 | blocking_notifier_call_chain(&module_notify_list, |
3315 | MODULE_STATE_GOING, mod); | 3317 | MODULE_STATE_GOING, mod); |
3318 | ftrace_release_mod(mod); | ||
3316 | free_module(mod); | 3319 | free_module(mod); |
3317 | wake_up_all(&module_wq); | 3320 | wake_up_all(&module_wq); |
3318 | return ret; | 3321 | return ret; |
@@ -3389,6 +3392,7 @@ static int complete_formation(struct module *mod, struct load_info *info) | |||
3389 | mod->state = MODULE_STATE_COMING; | 3392 | mod->state = MODULE_STATE_COMING; |
3390 | mutex_unlock(&module_mutex); | 3393 | mutex_unlock(&module_mutex); |
3391 | 3394 | ||
3395 | ftrace_module_enable(mod); | ||
3392 | blocking_notifier_call_chain(&module_notify_list, | 3396 | blocking_notifier_call_chain(&module_notify_list, |
3393 | MODULE_STATE_COMING, mod); | 3397 | MODULE_STATE_COMING, mod); |
3394 | return 0; | 3398 | return 0; |