]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
Merge commit 'v2.6.36-rc7' into perf/core
authorIngo Molnar <mingo@elte.hu>
Fri, 8 Oct 2010 08:46:27 +0000 (10:46 +0200)
committerIngo Molnar <mingo@elte.hu>
Fri, 8 Oct 2010 08:46:27 +0000 (10:46 +0200)
Conflicts:
arch/x86/kernel/module.c

Merge reason: Resolve the conflict, pick up fixes.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
1  2 
Makefile
arch/x86/kernel/module.c
include/linux/module.h
kernel/module.c

diff --combined Makefile
index 865126614a33ddacb987141567c8c3fbd02ede5f,77b5c6ed0ce5bf64764b97d2a45bd2e7b9fd3b11..534c09c255de57a41cc7146e22661f5499573d6e
+++ b/Makefile
@@@ -1,7 -1,7 +1,7 @@@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 36
- EXTRAVERSION = -rc5
+ EXTRAVERSION = -rc7
  NAME = Sheep on Meth
  
  # *DOCUMENTATION*
@@@ -591,11 -591,6 +591,11 @@@ KBUILD_CFLAGS    += $(call cc-option,-fno-
  # conserve stack if available
  KBUILD_CFLAGS   += $(call cc-option,-fconserve-stack)
  
 +# check for 'asm goto'
 +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
 +      KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
 +endif
 +
  # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
  # But warn user when we do so
  warn-assign = \
diff --combined arch/x86/kernel/module.c
index 5399f58de7ed356098a8d408a9c4d0acc7809b30,1c355c550960ab75279c644b52269cd5a368239a..8f295609173524cdf06a20c6c0ad4fbe1de12263
@@@ -239,14 -239,10 +239,13 @@@ int module_finalize(const Elf_Ehdr *hdr
                apply_paravirt(pseg, pseg + para->sh_size);
        }
  
-       return module_bug_finalize(hdr, sechdrs, me);
 +      /* make jump label nops */
 +      jump_label_apply_nops(me);
 +
+       return 0;
  }
  
  void module_arch_cleanup(struct module *mod)
  {
        alternatives_smp_module_del(mod);
-       module_bug_cleanup(mod);
  }
diff --combined include/linux/module.h
index 403ac26023ce05dc9ae25c2d98f2e372e9e85cd1,aace066bad8f067758cda4d341b9ce8941d2ae1c..b29e7458b96642b2f36162aa755b10ff76b15abe
@@@ -350,10 -350,7 +350,10 @@@ struct modul
        struct tracepoint *tracepoints;
        unsigned int num_tracepoints;
  #endif
 -
 +#ifdef HAVE_JUMP_LABEL
 +      struct jump_entry *jump_entries;
 +      unsigned int num_jump_entries;
 +#endif
  #ifdef CONFIG_TRACING
        const char **trace_bprintk_fmt_start;
        unsigned int num_trace_bprintk_fmt;
@@@ -689,17 -686,16 +689,16 @@@ extern int module_sysfs_initialized
  
  
  #ifdef CONFIG_GENERIC_BUG
int  module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *,
void module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *,
                         struct module *);
  void module_bug_cleanup(struct module *);
  
  #else /* !CONFIG_GENERIC_BUG */
  
- static inline int  module_bug_finalize(const Elf_Ehdr *hdr,
+ static inline void module_bug_finalize(const Elf_Ehdr *hdr,
                                        const Elf_Shdr *sechdrs,
                                        struct module *mod)
  {
-       return 0;
  }
  static inline void module_bug_cleanup(struct module *mod) {}
  #endif        /* CONFIG_GENERIC_BUG */
diff --combined kernel/module.c
index eba134157ef64c738c24c7eeeafbd3547989633d,ccd641991842f4990906946f895fd5062a0389c3..2df46301a7a407dcde3435542e38f6944358d7c1
@@@ -55,7 -55,6 +55,7 @@@
  #include <linux/async.h>
  #include <linux/percpu.h>
  #include <linux/kmemleak.h>
 +#include <linux/jump_label.h>
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/module.h>
@@@ -1538,6 -1537,7 +1538,7 @@@ static int __unlink_module(void *_mod
  {
        struct module *mod = _mod;
        list_del(&mod->list);
+       module_bug_cleanup(mod);
        return 0;
  }
  
@@@ -2309,11 -2309,6 +2310,11 @@@ static void find_module_sections(struc
                                        sizeof(*mod->tracepoints),
                                        &mod->num_tracepoints);
  #endif
 +#ifdef HAVE_JUMP_LABEL
 +      mod->jump_entries = section_objs(info, "__jump_table",
 +                                      sizeof(*mod->jump_entries),
 +                                      &mod->num_jump_entries);
 +#endif
  #ifdef CONFIG_EVENT_TRACING
        mod->trace_events = section_objs(info, "_ftrace_events",
                                         sizeof(*mod->trace_events),
@@@ -2631,6 -2626,7 +2632,7 @@@ static struct module *load_module(void 
        if (err < 0)
                goto ddebug;
  
+       module_bug_finalize(info.hdr, info.sechdrs, mod);
        list_add_rcu(&mod->list, &modules);
        mutex_unlock(&module_mutex);
  
        mutex_lock(&module_mutex);
        /* Unlink carefully: kallsyms could be walking list. */
        list_del_rcu(&mod->list);
+       module_bug_cleanup(mod);
   ddebug:
        if (!mod->taints)
                dynamic_debug_remove(info.debug);