Message ID | 8ff3ec195d695033b652e9971fba2dc5528f7151.1633964380.git.christophe.leroy@csgroup.eu (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Fix LKDTM for PPC64/IA64/PARISC | expand |
Christophe Leroy <christophe.leroy@csgroup.eu> writes: > 'struct ppc64_opd_entry' doesn't belong to uapi/asm/elf.h Agree, but ... > It was initially in module_64.c and commit 2d291e902791 ("Fix compile > failure with non modular builds") moved it into asm/elf.h > > But it was by mistake added outside of __KERNEL__ section, > therefore commit c3617f72036c ("UAPI: (Scripted) Disintegrate > arch/powerpc/include/asm") moved it to uapi/asm/elf.h ... it's been visible to userspace since the first commit moved it, ~13 years ago in 2008, v2.6.27. > Move it back into asm/elf.h, this brings it back in line with > IA64 and PARISC architectures. Removing it from the uapi header risks breaking userspace, I doubt anything uses it, but who knows. Given how long it's been there I think it's a bit risky to remove it :/ > diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h > index b8425e3cfd81..64b523848cd7 100644 > --- a/arch/powerpc/include/asm/elf.h > +++ b/arch/powerpc/include/asm/elf.h > @@ -176,4 +176,11 @@ do { \ > /* Relocate the kernel image to @final_address */ > void relocate(unsigned long final_address); > > +/* There's actually a third entry here, but it's unused */ > +struct ppc64_opd_entry > +{ > + unsigned long funcaddr; > + unsigned long r2; > +}; > + > #endif /* _ASM_POWERPC_ELF_H */ > diff --git a/arch/powerpc/include/uapi/asm/elf.h b/arch/powerpc/include/uapi/asm/elf.h > index 860c59291bfc..308857123a08 100644 > --- a/arch/powerpc/include/uapi/asm/elf.h > +++ b/arch/powerpc/include/uapi/asm/elf.h > @@ -289,12 +289,4 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG]; > /* Keep this the last entry. */ > #define R_PPC64_NUM 253 > > -/* There's actually a third entry here, but it's unused */ > -struct ppc64_opd_entry > -{ > - unsigned long funcaddr; > - unsigned long r2; > -}; Rather than removing it we can make it uapi only with: #ifndef __KERNEL__ /* There's actually a third entry here, but it's unused */ struct ppc64_opd_entry { unsigned long funcaddr; unsigned long r2; }; #endif And then we can do whatever we want with the kernel internal version. cheers
On Tue, Oct 12, 2021 at 9:10 AM Michael Ellerman <mpe@ellerman.id.au> wrote: > Christophe Leroy <christophe.leroy@csgroup.eu> writes: > > 'struct ppc64_opd_entry' doesn't belong to uapi/asm/elf.h > > But it was by mistake added outside of __KERNEL__ section, > > therefore commit c3617f72036c ("UAPI: (Scripted) Disintegrate > > arch/powerpc/include/asm") moved it to uapi/asm/elf.h > > ... it's been visible to userspace since the first commit moved it, ~13 > years ago in 2008, v2.6.27. > > > Move it back into asm/elf.h, this brings it back in line with > > IA64 and PARISC architectures. > > Removing it from the uapi header risks breaking userspace, I doubt > anything uses it, but who knows. > > Given how long it's been there I think it's a bit risky to remove it :/ I would not be too worried about it. While we should absolutely never break existing binaries, changing the visibility of internal structures in header files only breaks compiling applications that do rely on these entries, and they really should not be using this in the first place. Arnd
On Mon, Oct 11, 2021 at 05:25:28PM +0200, Christophe Leroy wrote: > 'struct ppc64_opd_entry' doesn't belong to uapi/asm/elf.h > > It was initially in module_64.c and commit 2d291e902791 ("Fix compile > failure with non modular builds") moved it into asm/elf.h > > But it was by mistake added outside of __KERNEL__ section, > therefore commit c3617f72036c ("UAPI: (Scripted) Disintegrate > arch/powerpc/include/asm") moved it to uapi/asm/elf.h > > Move it back into asm/elf.h, this brings it back in line with > IA64 and PARISC architectures. > > Fixes: 2d291e902791 ("Fix compile failure with non modular builds") > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> I'd agree with Arnd: this is a reasonable cleanup and nothing should be using it. Reviewed-by: Kees Cook <keescook@chromium.org>
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index b8425e3cfd81..64b523848cd7 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h @@ -176,4 +176,11 @@ do { \ /* Relocate the kernel image to @final_address */ void relocate(unsigned long final_address); +/* There's actually a third entry here, but it's unused */ +struct ppc64_opd_entry +{ + unsigned long funcaddr; + unsigned long r2; +}; + #endif /* _ASM_POWERPC_ELF_H */ diff --git a/arch/powerpc/include/uapi/asm/elf.h b/arch/powerpc/include/uapi/asm/elf.h index 860c59291bfc..308857123a08 100644 --- a/arch/powerpc/include/uapi/asm/elf.h +++ b/arch/powerpc/include/uapi/asm/elf.h @@ -289,12 +289,4 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG]; /* Keep this the last entry. */ #define R_PPC64_NUM 253 -/* There's actually a third entry here, but it's unused */ -struct ppc64_opd_entry -{ - unsigned long funcaddr; - unsigned long r2; -}; - - #endif /* _UAPI_ASM_POWERPC_ELF_H */
'struct ppc64_opd_entry' doesn't belong to uapi/asm/elf.h It was initially in module_64.c and commit 2d291e902791 ("Fix compile failure with non modular builds") moved it into asm/elf.h But it was by mistake added outside of __KERNEL__ section, therefore commit c3617f72036c ("UAPI: (Scripted) Disintegrate arch/powerpc/include/asm") moved it to uapi/asm/elf.h Move it back into asm/elf.h, this brings it back in line with IA64 and PARISC architectures. Fixes: 2d291e902791 ("Fix compile failure with non modular builds") Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> --- arch/powerpc/include/asm/elf.h | 7 +++++++ arch/powerpc/include/uapi/asm/elf.h | 8 -------- 2 files changed, 7 insertions(+), 8 deletions(-)