• A
    moduleparam: Save information about built-in modules in separate file · e78c1ed5
    Alexey Gladkov 提交于
    mainline inclusion
    from mainline-v5.2-rc1
    commit 898490c0
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I390TB
    CVE: NA
    
    Backporting this patch is to fix an issue happened when the 5.10
    kernel is building on openEuler 20.03 system.
    
    In openEuler 20.03 system, some modules ware built-in kernel. But
    in 5.10 kernel, those corresponding modules will be built as KO.
    For built-in kernel, kmode 2.7+ will fetch the modinfo from
    modules.builtin.modinfo which is only supported in kernel 5.2+.
    
    In the rpmbuild process, kernel spec will call kmod to query
    modinfo of the KO images. It will fail for 'file missing'.
    
    With backporting the mainline commit below, kmod can fetch any module's
    information from the corresponding module image or
    modules.builtin.modinfo.
    
    ---------------------------
    
    Problem:
    
    When a kernel module is compiled as a separate module, some important
    information about the kernel module is available via .modinfo section of
    the module.  In contrast, when the kernel module is compiled into the
    kernel, that information is not available.
    
    Information about built-in modules is necessary in the following cases:
    
    1. When it is necessary to find out what additional parameters can be
    passed to the kernel at boot time.
    
    2. When you need to know which module names and their aliases are in
    the kernel. This is very useful for creating an initrd image.
    
    Proposal:
    
    The proposed patch does not remove .modinfo section with module
    information from the vmlinux at the build time and saves it into a
    separate file after kernel linking. So, the kernel does not increase in
    size and no additional information remains in it. Information is stored
    in the same format as in the separate modules (null-terminated string
    array). Because the .modinfo section is already exported with a separate
    modules, we are not creating a new API.
    
    It can be easily read in the userspace:
    
    $ tr '\0' '\n' < modules.builtin.modinfo
    ext4.softdep=pre: crc32c
    ext4.license=GPL
    ext4.description=Fourth Extended Filesystem
    ext4.author=Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
    ext4.alias=fs-ext4
    ext4.alias=ext3
    ext4.alias=fs-ext3
    ext4.alias=ext2
    ext4.alias=fs-ext2
    md_mod.alias=block-major-9-*
    md_mod.alias=md
    md_mod.description=MD RAID framework
    md_mod.license=GPL
    md_mod.parmtype=create_on_open:bool
    md_mod.parmtype=start_dirty_degraded:int
    ...
    Co-Developed-by: NGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
    Signed-off-by: NGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
    Signed-off-by: NAlexey Gladkov <gladkov.alexey@gmail.com>
    Acked-by: NJessica Yu <jeyu@kernel.org>
    Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: NZhichang Yuan <erik.yuan@arm.com>
    Reviewed-by: NXie XiuQi <xiexiuqi@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: NCheng Jian <cj.chengjian@huawei.com>
    e78c1ed5
.gitignore 1.5 KB