Le 19/08/2022 à 05:37, Rohan McLure a écrit : > Syscall handlers should not be invoked internally by their symbol names, > as these symbols defined by the architecture-defined SYSCALL_DEFINE > macro. Move the compatibility syscall definition for mmap2 to > syscalls.c, so that all mmap implementations can share an inline helper > function, as is done with the personality handlers.
Shouldn't this be done prior to patch 5 ? > > Signed-off-by: Rohan McLure <rmcl...@linux.ibm.com> > --- > V1 -> V2: Move mmap2 compat implementation to asm/kernel/syscalls.c. > --- > arch/powerpc/kernel/sys_ppc32.c | 10 ---------- > arch/powerpc/kernel/syscalls.c | 11 +++++++++++ > 2 files changed, 11 insertions(+), 10 deletions(-) > > diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c > index 60cb5b4413b0..dd9039671227 100644 > --- a/arch/powerpc/kernel/sys_ppc32.c > +++ b/arch/powerpc/kernel/sys_ppc32.c > @@ -25,7 +25,6 @@ > #include <linux/poll.h> > #include <linux/personality.h> > #include <linux/stat.h> > -#include <linux/mman.h> > #include <linux/in.h> > #include <linux/syscalls.h> > #include <linux/unistd.h> > @@ -48,15 +47,6 @@ > #include <asm/syscalls.h> > #include <asm/switch_to.h> > > -COMPAT_SYSCALL_DEFINE6(mmap2, > - unsigned long, addr, size_t, len, > - unsigned long, prot, unsigned long, flags, > - unsigned long, fd, unsigned long, pgoff) > -{ > - /* This should remain 12 even if PAGE_SIZE changes */ > - return sys_mmap(addr, len, prot, flags, fd, pgoff << 12); > -} > - > /* > * long long munging: > * The 32 bit ABI passes long longs in an odd even register pair. > diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c > index e083935c5bf2..0afbcbd50433 100644 > --- a/arch/powerpc/kernel/syscalls.c > +++ b/arch/powerpc/kernel/syscalls.c > @@ -56,6 +56,17 @@ SYSCALL_DEFINE6(mmap2, unsigned long, addr, size_t, len, > return do_mmap2(addr, len, prot, flags, fd, pgoff, PAGE_SHIFT-12); > } > > +#ifdef CONFIG_COMPAT > +COMPAT_SYSCALL_DEFINE6(mmap2, > + unsigned long, addr, size_t, len, > + unsigned long, prot, unsigned long, flags, > + unsigned long, fd, unsigned long, pgoff) > +{ > + /* This should remain 12 even if PAGE_SIZE changes */ > + return do_mmap2(addr, len, prot, flags, fd, pgoff << 12, PAGE_SHIFT-12); > +} > +#endif > + > SYSCALL_DEFINE6(mmap, unsigned long, addr, size_t, len, > unsigned long, prot, unsigned long, flags, > unsigned long, fd, off_t, offset)