Thread (27 messages) 27 messages, 2 authors, 2022-08-24

Re: [PATCH v3 07/18] powerpc: Remove direct call to mmap2 syscall handlers

From: Christophe Leroy <hidden>
Date: 2022-08-19 06:43:01


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 ?
quoted hunk ↗ jump to hunk
Signed-off-by: Rohan McLure <redacted>
---
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)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help