powerpc: Use 'struct func_desc' instead of 'struct ppc64_opd_entry'
'struct ppc64_opd_entry' is somehow redundant with 'struct func_desc', the later is more correct/complete as it includes the third field which is unused. So use 'struct func_desc' instead of 'struct ppc64_opd_entry' Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/34e76bac6cbe95a63ecd37df69fb7feb93b0ea7c.1644928018.git.christophe.leroy@csgroup.eu
This commit is contained in:
committed by
Michael Ellerman
parent
5b23cb8cc6
commit
d3e32b997a
@ -61,10 +61,10 @@ static inline int overlaps_kernel_text(unsigned long start, unsigned long end)
|
||||
#undef dereference_function_descriptor
|
||||
static inline void *dereference_function_descriptor(void *ptr)
|
||||
{
|
||||
struct ppc64_opd_entry *desc = ptr;
|
||||
struct func_desc *desc = ptr;
|
||||
void *p;
|
||||
|
||||
if (!get_kernel_nofault(p, (void *)&desc->funcaddr))
|
||||
if (!get_kernel_nofault(p, (void *)&desc->addr))
|
||||
ptr = p;
|
||||
return ptr;
|
||||
}
|
||||
|
@ -64,19 +64,19 @@ static unsigned int local_entry_offset(const Elf64_Sym *sym)
|
||||
#else
|
||||
|
||||
/* An address is address of the OPD entry, which contains address of fn. */
|
||||
typedef struct ppc64_opd_entry func_desc_t;
|
||||
typedef struct func_desc func_desc_t;
|
||||
|
||||
static func_desc_t func_desc(unsigned long addr)
|
||||
{
|
||||
return *(struct ppc64_opd_entry *)addr;
|
||||
return *(struct func_desc *)addr;
|
||||
}
|
||||
static unsigned long func_addr(unsigned long addr)
|
||||
{
|
||||
return func_desc(addr).funcaddr;
|
||||
return func_desc(addr).addr;
|
||||
}
|
||||
static unsigned long stub_func_addr(func_desc_t func)
|
||||
{
|
||||
return func.funcaddr;
|
||||
return func.addr;
|
||||
}
|
||||
static unsigned int local_entry_offset(const Elf64_Sym *sym)
|
||||
{
|
||||
@ -187,7 +187,7 @@ static int relacmp(const void *_x, const void *_y)
|
||||
static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
|
||||
const Elf64_Shdr *sechdrs)
|
||||
{
|
||||
/* One extra reloc so it's always 0-funcaddr terminated */
|
||||
/* One extra reloc so it's always 0-addr terminated */
|
||||
unsigned long relocs = 1;
|
||||
unsigned i;
|
||||
|
||||
|
Reference in New Issue
Block a user