diff options
author | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> | 2014-11-10 09:28:29 +1030 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2014-11-11 17:07:46 +1030 |
commit | 0286b5ea125e58b4797747f688949c05394412e8 (patch) | |
tree | def974e29b25f8a7a00da7b39f5b18bac93af98d /kernel | |
parent | 461e34aed0550fee706a9a28fb453830b5079ea0 (diff) | |
download | linux-0286b5ea125e58b4797747f688949c05394412e8.tar.gz linux-0286b5ea125e58b4797747f688949c05394412e8.tar.bz2 linux-0286b5ea125e58b4797747f688949c05394412e8.zip |
lib/bug: Use RCU list ops for module_bug_list
Actually since module_bug_list should be used in BUG context,
we may not need this. But for someone who want to use this
from normal context, this makes module_bug_list an RCU list.
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/module.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/module.c b/kernel/module.c index bed608b8c8a6..d596a306b0a1 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1850,9 +1850,10 @@ static void free_module(struct module *mod) mutex_lock(&module_mutex); /* Unlink carefully: kallsyms could be walking list. */ list_del_rcu(&mod->list); - /* Wait for RCU synchronizing before releasing mod->list. */ - synchronize_rcu(); + /* Remove this module from bug list, this uses list_del_rcu */ module_bug_cleanup(mod); + /* Wait for RCU synchronizing before releasing mod->list and buglist. */ + synchronize_rcu(); mutex_unlock(&module_mutex); /* This may be NULL, but that's OK */ |