The *_gpl section are not being used populated by modpost anymore. Hence
the module loader doesn't need to find and process these sections in
modules.

Signed-off-by: Siddharth Nayyar <sidnay...@google.com>
---
 include/linux/module.h   |  3 ---
 kernel/module/internal.h |  3 ---
 kernel/module/main.c     | 40 ++++++++++++----------------------------
 3 files changed, 12 insertions(+), 34 deletions(-)

diff --git a/include/linux/module.h b/include/linux/module.h
index 9ba6ce433ac3..1a9c41318e22 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -431,9 +431,6 @@ struct module {
        unsigned int num_kp;
 
        /* GPL-only exported symbols. */
-       unsigned int num_gpl_syms;
-       const struct kernel_symbol *gpl_syms;
-       const u32 *gpl_crcs;
        bool using_gplonly_symbols;
 
 #ifdef CONFIG_MODULE_SIG
diff --git a/kernel/module/internal.h b/kernel/module/internal.h
index 69b84510e097..061161cc79d9 100644
--- a/kernel/module/internal.h
+++ b/kernel/module/internal.h
@@ -53,10 +53,7 @@ extern const size_t modinfo_attrs_count;
 /* Provided by the linker */
 extern const struct kernel_symbol __start___ksymtab[];
 extern const struct kernel_symbol __stop___ksymtab[];
-extern const struct kernel_symbol __start___ksymtab_gpl[];
-extern const struct kernel_symbol __stop___ksymtab_gpl[];
 extern const u32 __start___kcrctab[];
-extern const u32 __start___kcrctab_gpl[];
 extern const u8 __start___kflagstab[];
 
 #define KMOD_PATH_LEN 256
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 400d59a7f44b..4437c2a451ea 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -1464,29 +1464,18 @@ EXPORT_SYMBOL_GPL(__symbol_get);
  */
 static int verify_exported_symbols(struct module *mod)
 {
-       unsigned int i;
        const struct kernel_symbol *s;
-       struct {
-               const struct kernel_symbol *sym;
-               unsigned int num;
-       } arr[] = {
-               { mod->syms, mod->num_syms },
-               { mod->gpl_syms, mod->num_gpl_syms },
-       };
-
-       for (i = 0; i < ARRAY_SIZE(arr); i++) {
-               for (s = arr[i].sym; s < arr[i].sym + arr[i].num; s++) {
-                       struct find_symbol_arg fsa = {
-                               .name   = kernel_symbol_name(s),
-                               .gplok  = true,
-                       };
-                       if (find_symbol(&fsa)) {
-                               pr_err("%s: exports duplicate symbol %s"
-                                      " (owned by %s)\n",
-                                      mod->name, kernel_symbol_name(s),
-                                      module_name(fsa.owner));
-                               return -ENOEXEC;
-                       }
+       for (s = mod->syms; s < mod->syms + mod->num_syms; s++) {
+               struct find_symbol_arg fsa = {
+                       .name   = kernel_symbol_name(s),
+                       .gplok  = true,
+               };
+               if (find_symbol(&fsa)) {
+                       pr_err("%s: exports duplicate symbol %s"
+                               " (owned by %s)\n",
+                               mod->name, kernel_symbol_name(s),
+                               module_name(fsa.owner));
+                       return -ENOEXEC;
                }
        }
        return 0;
@@ -2601,10 +2590,6 @@ static int find_module_sections(struct module *mod, 
struct load_info *info)
        mod->syms = section_objs(info, "__ksymtab",
                                 sizeof(*mod->syms), &mod->num_syms);
        mod->crcs = section_addr(info, "__kcrctab");
-       mod->gpl_syms = section_objs(info, "__ksymtab_gpl",
-                                    sizeof(*mod->gpl_syms),
-                                    &mod->num_gpl_syms);
-       mod->gpl_crcs = section_addr(info, "__kcrctab_gpl");
        mod->flagstab = section_addr(info, "__kflagstab");
 
 #ifdef CONFIG_CONSTRUCTORS
@@ -2812,8 +2797,7 @@ static int move_module(struct module *mod, struct 
load_info *info)
 static int check_export_symbol_versions(struct module *mod)
 {
 #ifdef CONFIG_MODVERSIONS
-       if ((mod->num_syms && !mod->crcs) ||
-           (mod->num_gpl_syms && !mod->gpl_crcs)) {
+       if (mod->num_syms && !mod->crcs) {
                return try_to_force_load(mod,
                                         "no versions for exported symbols");
        }
-- 
2.51.0.338.gd7d06c2dae-goog


Reply via email to