This patch series implements a mechanism for scalable exported symbol flags using a separate section called __kflagstab. The series introduces __kflagstab support, removes *_gpl sections in favor of a GPL flag, simplifies symbol resolution during module loading.
This series previously added symbol import protection which aims to restrict the use of "protected symbol" exported by vmlinux, as a use case for which __kflagstab is being introduced. Such symbols are only allowed to be imported by signed modules when symbol protection is enabled. This functionality requires more thought and discussion [1], and therefore I will create a separate patch series for it. In the meantime, this series now only focuses on introduction of __kflagstab which right is an improvement to the module loader's code health [2]. Thank you Petr Pavlu and Jonathan Corbet for their valuable feedback. --- Changes from v2: - removed symbol import protection to spin off into its own series v2: https://lore.kernel.org/[email protected]/ Changes from v1: - added a check to ensure __kflagstab is present - added warnings for the obsolete *_gpl sections - moved protected symbol check before ref_module() call - moved protected symbol check failure warning to issue detection point v1: https://lore.kernel.org/[email protected]/ [1] https://lore.kernel.org/[email protected]/ [2] https://lore.kernel.org/[email protected]/ Siddharth Nayyar (8): define kernel symbol flags linker: add kflagstab section to vmlinux and modules modpost: create entries for kflagstab module loader: use kflagstab instead of *_gpl sections modpost: put all exported symbols in ksymtab section module loader: remove references of *_gpl sections linker: remove *_gpl sections from vmlinux and modules remove references to *_gpl sections in documentation Documentation/kbuild/modules.rst | 11 ++-- include/asm-generic/vmlinux.lds.h | 21 ++---- include/linux/export-internal.h | 28 +++++--- include/linux/module.h | 4 +- include/linux/module_symbol.h | 5 ++ kernel/module/internal.h | 4 +- kernel/module/main.c | 102 ++++++++++++++---------------- scripts/mod/modpost.c | 16 +++-- scripts/module.lds.S | 3 +- 9 files changed, 99 insertions(+), 95 deletions(-) -- 2.51.1.930.gacf6e81ea2-goog

