#define THIS_MODULE ((struct module *)0)
  #endif
  
 -#ifdef CONFIG_MODULES
 -
+ #define NS_SEPARATOR "."
+ 
 -#if defined(__KERNEL__) && !defined(__GENKSYMS__)
  #ifdef CONFIG_MODVERSIONS
  /* Mark the CRC weak since genksyms apparently decides not to
   * generate a checksums for some symbols */
  };
  #endif
  
- #define ___EXPORT_SYMBOL(sym, sec)    __GENKSYMS_EXPORT_SYMBOL(sym)
 +#ifdef __GENKSYMS__
 +
- /* For every exported symbol, place a struct in the __ksymtab section */
- #define ___EXPORT_SYMBOL(sym, sec)                                    \
++#define ___EXPORT_SYMBOL(sym,sec)     __GENKSYMS_EXPORT_SYMBOL(sym)
++#define ___EXPORT_SYMBOL_NS(sym,sec,ns)       __GENKSYMS_EXPORT_SYMBOL(sym)
 +
 +#else
 +
+ #define ___export_symbol_common(sym, sec)                             \
        extern typeof(sym) sym;                                         \
-       __CRC_SYMBOL(sym, sec)                                          \
+       __CRC_SYMBOL(sym, sec);                                         \
        static const char __kstrtab_##sym[]                             \
        __attribute__((section("__ksymtab_strings"), used, aligned(1))) \
-       = #sym;                                                         \
+       = #sym                                                          \
+ 
+ /* For every exported symbol, place a struct in the __ksymtab section */
+ #define ___EXPORT_SYMBOL_NS(sym, sec, ns)                             \
+       ___export_symbol_common(sym, sec);                              \
+       static const char __kstrtab_ns_##sym[]                          \
+       __attribute__((section("__ksymtab_strings"), used, aligned(1))) \
+       = #ns;                                                          \
+       __KSYMTAB_ENTRY_NS(sym, sec, ns)
+ 
+ #define ___EXPORT_SYMBOL(sym, sec)                                    \
+       ___export_symbol_common(sym, sec);                              \
        __KSYMTAB_ENTRY(sym, sec)
  
 -#if defined(__DISABLE_EXPORTS)
 +#endif
 +
 +#if !defined(CONFIG_MODULES) || defined(__DISABLE_EXPORTS)
  
  /*
   * Allow symbol exports to be disabled completely so that C code may
  #define __cond_export_sym_1(sym, sec) ___EXPORT_SYMBOL(sym, sec)
  #define __cond_export_sym_0(sym, sec) /* nothing */
  
+ #define __EXPORT_SYMBOL_NS(sym, sec, ns)                              \
+       __ksym_marker(sym);                                             \
+       __cond_export_ns_sym(sym, sec, ns, __is_defined(__KSYM_##sym))
+ #define __cond_export_ns_sym(sym, sec, ns, conf)                      \
+       ___cond_export_ns_sym(sym, sec, ns, conf)
+ #define ___cond_export_ns_sym(sym, sec, ns, enabled)                  \
+       __cond_export_ns_sym_##enabled(sym, sec, ns)
+ #define __cond_export_ns_sym_1(sym, sec, ns) ___EXPORT_SYMBOL_NS(sym, sec, ns)
+ #define __cond_export_ns_sym_0(sym, sec, ns) /* nothing */
+ 
  #else
 -#define __EXPORT_SYMBOL_NS ___EXPORT_SYMBOL_NS
 -#define __EXPORT_SYMBOL ___EXPORT_SYMBOL
 -#endif
 +
- #define __EXPORT_SYMBOL(sym, sec)     ___EXPORT_SYMBOL(sym, sec)
++#define __EXPORT_SYMBOL_NS(sym,sec,ns)        ___EXPORT_SYMBOL_NS(sym,sec,ns)
++#define __EXPORT_SYMBOL(sym,sec)      ___EXPORT_SYMBOL(sym,sec)
 +
 +#endif /* CONFIG_MODULES */
  
 -#define EXPORT_SYMBOL(sym) __EXPORT_SYMBOL(sym, "")
 -#define EXPORT_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_gpl")
 -#define EXPORT_SYMBOL_GPL_FUTURE(sym) __EXPORT_SYMBOL(sym, "_gpl_future")
 -#define EXPORT_SYMBOL_NS(sym, ns) __EXPORT_SYMBOL_NS(sym, "", ns)
 -#define EXPORT_SYMBOL_NS_GPL(sym, ns) __EXPORT_SYMBOL_NS(sym, "_gpl", ns)
+ #ifdef DEFAULT_SYMBOL_NAMESPACE
+ #undef __EXPORT_SYMBOL
+ #define __EXPORT_SYMBOL(sym, sec)                             \
+       __EXPORT_SYMBOL_NS(sym, sec, DEFAULT_SYMBOL_NAMESPACE)
+ #endif
+ 
 +#define EXPORT_SYMBOL(sym)            __EXPORT_SYMBOL(sym, "")
 +#define EXPORT_SYMBOL_GPL(sym)                __EXPORT_SYMBOL(sym, "_gpl")
 +#define EXPORT_SYMBOL_GPL_FUTURE(sym) __EXPORT_SYMBOL(sym, "_gpl_future")
++#define EXPORT_SYMBOL_NS(sym, ns)     __EXPORT_SYMBOL_NS(sym, "", ns)
++#define EXPORT_SYMBOL_NS_GPL(sym, ns) __EXPORT_SYMBOL_NS(sym, "_gpl", ns)
+ 
  #ifdef CONFIG_UNUSED_SYMBOLS
 -#define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused")
 -#define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl")
 +#define EXPORT_UNUSED_SYMBOL(sym)     __EXPORT_SYMBOL(sym, "_unused")
 +#define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl")
  #else
  #define EXPORT_UNUSED_SYMBOL(sym)
  #define EXPORT_UNUSED_SYMBOL_GPL(sym)
 
  quiet_cmd_modpost = MODPOST $(words $(modules)) modules
        cmd_modpost = sed 's/ko$$/o/' $(MODORDER) | $(MODPOST)
  
 -PHONY += modules-modpost
 -modules-modpost:
 +__modpost:
 +      @$(kecho) '  Building modules, stage 2.'
        $(call cmd,modpost)
 -
 -# Declare generated files as targets for modpost
 -$(modules:.ko=.mod.c): modules-modpost
 -
 -# Step 5), compile all *.mod.c files
 -
 -# modname is set to make c_flags define KBUILD_MODNAME
 -modname = $(notdir $(@:.mod.o=))
 -
 -quiet_cmd_cc_o_c = CC      $@
 -      cmd_cc_o_c = $(CC) $(c_flags) $(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE) \
 -                 -c -o $@ $<
 -
 -$(modules:.ko=.mod.o): %.mod.o: %.mod.c FORCE
 -      $(call if_changed_dep,cc_o_c)
 -
 -targets += $(modules:.ko=.mod.o)
 -
 -ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
 -
 -# Step 6), final link of the modules with optional arch pass after final link
 -quiet_cmd_ld_ko_o = LD [M]  $@
 -      cmd_ld_ko_o =                                                     \
 -      $(LD) -r $(KBUILD_LDFLAGS)                                      \
 -                 $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)             \
 -                 -o $@ $(real-prereqs) ;                                \
 -      $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
 -
 -$(modules): %.ko :%.o %.mod.o FORCE
 -      +$(call if_changed,ld_ko_o)
 -
 -targets += $(modules)
 +ifneq ($(KBUILD_MODPOST_NOFINAL),1)
 +      $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modfinal
 +endif
  
 -# Add FORCE to the prequisites of a target to force it to be always rebuilt.
 -# ---------------------------------------------------------------------------
 -
 -PHONY += FORCE
 -
 -FORCE:
 -
 -# Read all saved command lines and dependencies for the $(targets) we
 -# may be building above, using $(if_changed{,_dep}). As an
 -# optimization, we don't need to read them if the target does not
 -# exist, we will rebuild anyway in that case.
 -
 -existing-targets := $(wildcard $(sort $(targets)))
 -
 --include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
 -
+ nsdeps: __modpost
+ 
  endif
  
  .PHONY: $(PHONY)