diff options
| author | Robert Richter <robert.richter@amd.com> | 2010-10-15 06:45:00 -0400 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2010-10-15 06:45:00 -0400 |
| commit | 6268464b370e234e0255330190f9bd5d19386ad7 (patch) | |
| tree | 5742641092ce64227dd2086d78baaede57da1f80 /kernel/module.c | |
| parent | 7df01d96b295e400167e78061b81d4c91630b12d (diff) | |
| parent | 0fdf13606b67f830559abdaad15980c7f4f05ec4 (diff) | |
Merge remote branch 'tip/perf/core' into oprofile/core
Conflicts:
arch/arm/oprofile/common.c
kernel/perf_event.c
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c index d0b5f8db11b4..2df46301a7a4 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -55,6 +55,7 @@ | |||
| 55 | #include <linux/async.h> | 55 | #include <linux/async.h> |
| 56 | #include <linux/percpu.h> | 56 | #include <linux/percpu.h> |
| 57 | #include <linux/kmemleak.h> | 57 | #include <linux/kmemleak.h> |
| 58 | #include <linux/jump_label.h> | ||
| 58 | 59 | ||
| 59 | #define CREATE_TRACE_POINTS | 60 | #define CREATE_TRACE_POINTS |
| 60 | #include <trace/events/module.h> | 61 | #include <trace/events/module.h> |
| @@ -1537,6 +1538,7 @@ static int __unlink_module(void *_mod) | |||
| 1537 | { | 1538 | { |
| 1538 | struct module *mod = _mod; | 1539 | struct module *mod = _mod; |
| 1539 | list_del(&mod->list); | 1540 | list_del(&mod->list); |
| 1541 | module_bug_cleanup(mod); | ||
| 1540 | return 0; | 1542 | return 0; |
| 1541 | } | 1543 | } |
| 1542 | 1544 | ||
| @@ -2308,6 +2310,11 @@ static void find_module_sections(struct module *mod, struct load_info *info) | |||
| 2308 | sizeof(*mod->tracepoints), | 2310 | sizeof(*mod->tracepoints), |
| 2309 | &mod->num_tracepoints); | 2311 | &mod->num_tracepoints); |
| 2310 | #endif | 2312 | #endif |
| 2313 | #ifdef HAVE_JUMP_LABEL | ||
| 2314 | mod->jump_entries = section_objs(info, "__jump_table", | ||
| 2315 | sizeof(*mod->jump_entries), | ||
| 2316 | &mod->num_jump_entries); | ||
| 2317 | #endif | ||
| 2311 | #ifdef CONFIG_EVENT_TRACING | 2318 | #ifdef CONFIG_EVENT_TRACING |
| 2312 | mod->trace_events = section_objs(info, "_ftrace_events", | 2319 | mod->trace_events = section_objs(info, "_ftrace_events", |
| 2313 | sizeof(*mod->trace_events), | 2320 | sizeof(*mod->trace_events), |
| @@ -2625,6 +2632,7 @@ static struct module *load_module(void __user *umod, | |||
| 2625 | if (err < 0) | 2632 | if (err < 0) |
| 2626 | goto ddebug; | 2633 | goto ddebug; |
| 2627 | 2634 | ||
| 2635 | module_bug_finalize(info.hdr, info.sechdrs, mod); | ||
| 2628 | list_add_rcu(&mod->list, &modules); | 2636 | list_add_rcu(&mod->list, &modules); |
| 2629 | mutex_unlock(&module_mutex); | 2637 | mutex_unlock(&module_mutex); |
| 2630 | 2638 | ||
| @@ -2650,6 +2658,8 @@ static struct module *load_module(void __user *umod, | |||
| 2650 | mutex_lock(&module_mutex); | 2658 | mutex_lock(&module_mutex); |
| 2651 | /* Unlink carefully: kallsyms could be walking list. */ | 2659 | /* Unlink carefully: kallsyms could be walking list. */ |
| 2652 | list_del_rcu(&mod->list); | 2660 | list_del_rcu(&mod->list); |
| 2661 | module_bug_cleanup(mod); | ||
| 2662 | |||
| 2653 | ddebug: | 2663 | ddebug: |
| 2654 | if (!mod->taints) | 2664 | if (!mod->taints) |
| 2655 | dynamic_debug_remove(info.debug); | 2665 | dynamic_debug_remove(info.debug); |
