X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kernel%2Fmodule.c;h=d24fcf29cb64c16029857a89dbcdeaa1ef9d724a;hb=1440db30c1ef3560ab8e23bec7f92dfd4a766813;hp=f5a3b1e8ec5137395fba2b42165aeb972f0530d0;hpb=f7698ba75fa283435f5077b9dfb4319d28b9de9a;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git diff --git a/kernel/module.c b/kernel/module.c index f5a3b1e..1d679a6 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -815,11 +815,6 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user, return -EFAULT; name[MODULE_NAME_LEN-1] = '\0'; - if (!(flags & O_NONBLOCK)) { - printk(KERN_WARNING - "waiting module removal not supported: please upgrade"); - } - if (mutex_lock_interruptible(&module_mutex) != 0) return -EINTR; @@ -1846,7 +1841,9 @@ static void free_module(struct module *mod) /* We leave it in list to prevent duplicate loads, but make sure * that noone uses it while it's being deconstructed. */ + mutex_lock(&module_mutex); mod->state = MODULE_STATE_UNFORMED; + mutex_unlock(&module_mutex); /* Remove dynamic debug info */ ddebug_remove_module(mod->name); @@ -3267,6 +3264,9 @@ static int load_module(struct load_info *info, const char __user *uargs, dynamic_debug_setup(info->debug, info->num_debug); + /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */ + ftrace_module_init(mod); + /* Finally it's fully formed, ready to start executing. */ err = complete_formation(mod, info); if (err)