lkml.org 
[lkml]   [2023]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 08/13] riscv: module: move find_section to module.h
    Date
    Move find_section() to module.h so that the implementation can be shared
    by the alternatives code. This will allow us to use alternatives in
    the vdso.

    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    ---
    arch/riscv/include/asm/module.h | 16 ++++++++++++++++
    arch/riscv/kernel/module.c | 15 ---------------
    2 files changed, 16 insertions(+), 15 deletions(-)

    diff --git a/arch/riscv/include/asm/module.h b/arch/riscv/include/asm/module.h
    index 76aa96a9fc08..0f3baaa6a9a8 100644
    --- a/arch/riscv/include/asm/module.h
    +++ b/arch/riscv/include/asm/module.h
    @@ -5,6 +5,7 @@
    #define _ASM_RISCV_MODULE_H

    #include <asm-generic/module.h>
    +#include <linux/elf.h>

    struct module;
    unsigned long module_emit_got_entry(struct module *mod, unsigned long val);
    @@ -111,4 +112,19 @@ static inline struct plt_entry *get_plt_entry(unsigned long val,

    #endif /* CONFIG_MODULE_SECTIONS */

    +static inline const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
    + const Elf_Shdr *sechdrs,
    + const char *name)
    +{
    + const Elf_Shdr *s, *se;
    + const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
    +
    + for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) {
    + if (strcmp(name, secstrs + s->sh_name) == 0)
    + return s;
    + }
    +
    + return NULL;
    +}
    +
    #endif /* _ASM_RISCV_MODULE_H */
    diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c
    index 91fe16bfaa07..76f4b9c2ec5b 100644
    --- a/arch/riscv/kernel/module.c
    +++ b/arch/riscv/kernel/module.c
    @@ -429,21 +429,6 @@ void *module_alloc(unsigned long size)
    }
    #endif

    -static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
    - const Elf_Shdr *sechdrs,
    - const char *name)
    -{
    - const Elf_Shdr *s, *se;
    - const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
    -
    - for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) {
    - if (strcmp(name, secstrs + s->sh_name) == 0)
    - return s;
    - }
    -
    - return NULL;
    -}
    -
    int module_finalize(const Elf_Ehdr *hdr,
    const Elf_Shdr *sechdrs,
    struct module *me)
    --
    2.38.1
    \
     
     \ /
      Last update: 2023-03-26 23:42    [W:4.546 / U:0.652 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site