All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Suchanek <msuchanek@suse.de>
To: linuxppc-dev@lists.ozlabs.org
Cc: Michal Suchanek <msuchanek@suse.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Christophe Leroy <christophe.leroy@c-s.fr>,
	Breno Leitao <leitao@debian.org>, Arnd Bergmann <arnd@arndb.de>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Firoz Khan <firoz.khan@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Joel Stanley <joel@jms.id.au>,
	Hari Bathini <hbathini@linux.ibm.com>,
	Michael Neuling <mikey@neuling.org>,
	Andrew Donnellan <andrew.donnellan@au1.ibm.com>,
	Russell Currey <ruscur@russell.cc>,
	Diana Craciun <diana.craciun@nxp.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	David Hildenbrand <david@redhat.com>,
	Allison Randal <allison@lohutok.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Madhavan Srinivasan <maddy@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [PATCH v8 4/7] powerpc/perf: consolidate valid_user_sp
Date: Thu, 12 Sep 2019 19:26:06 +0200	[thread overview]
Message-ID: <6429623dfb3f92e45c9d403194e16943eb51da79.1568306311.git.msuchanek@suse.de> (raw)
In-Reply-To: <cover.1568306311.git.msuchanek@suse.de>

Merge the 32bit and 64bit version.

Halve the check constants on 32bit.

Use STACK_TOP since it is defined.

This removes a page from the valid 32bit area on 64bit:
 #define TASK_SIZE_USER32 (0x0000000100000000UL - (1 * PAGE_SIZE))
 #define STACK_TOP_USER32 TASK_SIZE_USER32

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
v8: new patch
---
 arch/powerpc/perf/callchain.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index d86bdbffda9e..7863ee0a0e69 100644
--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -102,6 +102,20 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
 	}
 }
 
+static inline int valid_user_sp(unsigned long sp, int is_64)
+{
+	unsigned long stack_top;
+
+	if (IS_ENABLED(CONFIG_PPC32))
+		stack_top = STACK_TOP;
+	else    /* STACK_TOP uses is_32bit_task() but we want is_64 */
+		stack_top = is_64 ? STACK_TOP_USER64 : STACK_TOP_USER32;
+
+	if (!sp || (sp & (is_64 ? 7 : 3)) || sp > stack_top - (is_64 ? 32 : 16))
+		return 0;
+	return 1;
+}
+
 #ifdef CONFIG_PPC64
 /*
  * On 64-bit we don't want to invoke hash_page on user addresses from
@@ -165,13 +179,6 @@ static int read_user_stack_64(unsigned long __user *ptr, unsigned long *ret)
 	return read_user_stack_slow(ptr, ret, 8);
 }
 
-static inline int valid_user_sp(unsigned long sp, int is_64)
-{
-	if (!sp || (sp & 7) || sp > (is_64 ? TASK_SIZE : 0x100000000UL) - 32)
-		return 0;
-	return 1;
-}
-
 /*
  * 64-bit user processes use the same stack frame for RT and non-RT signals.
  */
@@ -294,13 +301,6 @@ static inline int current_is_64bit(void)
 	return 0;
 }
 
-static inline int valid_user_sp(unsigned long sp, int is_64)
-{
-	if (!sp || (sp & 7) || sp > TASK_SIZE - 32)
-		return 0;
-	return 1;
-}
-
 #define __SIGNAL_FRAMESIZE32	__SIGNAL_FRAMESIZE
 #define sigcontext32		sigcontext
 #define mcontext32		mcontext
-- 
2.23.0


WARNING: multiple messages have this Message-ID (diff)
From: Michal Suchanek <msuchanek@suse.de>
To: linuxppc-dev@lists.ozlabs.org
Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Paul Mackerras <paulus@samba.org>,
	Breno Leitao <leitao@debian.org>,
	Michael Neuling <mikey@neuling.org>,
	Diana Craciun <diana.craciun@nxp.com>,
	Firoz Khan <firoz.khan@linaro.org>,
	Hari Bathini <hbathini@linux.ibm.com>,
	Michal Suchanek <msuchanek@suse.de>,
	Joel Stanley <joel@jms.id.au>, Arnd Bergmann <arnd@arndb.de>,
	Nicholas Piggin <npiggin@gmail.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Thomas Gleixner <tglx@linutronix.de>,
	Allison Randal <allison@lohutok.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Andrew Donnellan <andrew.donnellan@au1.ibm.com>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH v8 4/7] powerpc/perf: consolidate valid_user_sp
Date: Thu, 12 Sep 2019 19:26:06 +0200	[thread overview]
Message-ID: <6429623dfb3f92e45c9d403194e16943eb51da79.1568306311.git.msuchanek@suse.de> (raw)
In-Reply-To: <cover.1568306311.git.msuchanek@suse.de>

Merge the 32bit and 64bit version.

Halve the check constants on 32bit.

Use STACK_TOP since it is defined.

This removes a page from the valid 32bit area on 64bit:
 #define TASK_SIZE_USER32 (0x0000000100000000UL - (1 * PAGE_SIZE))
 #define STACK_TOP_USER32 TASK_SIZE_USER32

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
v8: new patch
---
 arch/powerpc/perf/callchain.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index d86bdbffda9e..7863ee0a0e69 100644
--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -102,6 +102,20 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
 	}
 }
 
+static inline int valid_user_sp(unsigned long sp, int is_64)
+{
+	unsigned long stack_top;
+
+	if (IS_ENABLED(CONFIG_PPC32))
+		stack_top = STACK_TOP;
+	else    /* STACK_TOP uses is_32bit_task() but we want is_64 */
+		stack_top = is_64 ? STACK_TOP_USER64 : STACK_TOP_USER32;
+
+	if (!sp || (sp & (is_64 ? 7 : 3)) || sp > stack_top - (is_64 ? 32 : 16))
+		return 0;
+	return 1;
+}
+
 #ifdef CONFIG_PPC64
 /*
  * On 64-bit we don't want to invoke hash_page on user addresses from
@@ -165,13 +179,6 @@ static int read_user_stack_64(unsigned long __user *ptr, unsigned long *ret)
 	return read_user_stack_slow(ptr, ret, 8);
 }
 
-static inline int valid_user_sp(unsigned long sp, int is_64)
-{
-	if (!sp || (sp & 7) || sp > (is_64 ? TASK_SIZE : 0x100000000UL) - 32)
-		return 0;
-	return 1;
-}
-
 /*
  * 64-bit user processes use the same stack frame for RT and non-RT signals.
  */
@@ -294,13 +301,6 @@ static inline int current_is_64bit(void)
 	return 0;
 }
 
-static inline int valid_user_sp(unsigned long sp, int is_64)
-{
-	if (!sp || (sp & 7) || sp > TASK_SIZE - 32)
-		return 0;
-	return 1;
-}
-
 #define __SIGNAL_FRAMESIZE32	__SIGNAL_FRAMESIZE
 #define sigcontext32		sigcontext
 #define mcontext32		mcontext
-- 
2.23.0


  parent reply	other threads:[~2019-09-12 17:27 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-12 17:26 [PATCH v8 0/7] Disable compat cruft on ppc64le v8 Michal Suchanek
2019-09-12 17:26 ` Michal Suchanek
2019-09-12 17:26 ` [PATCH v8 1/7] powerpc: Add back __ARCH_WANT_SYS_LLSEEK macro Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek
2019-09-12 17:26 ` [PATCH v8 2/7] powerpc: move common register copy functions from signal_32.c to signal.c Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek
2019-09-12 17:26 ` [PATCH v8 3/7] powerpc/perf: consolidate read_user_stack_32 Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek
2019-09-12 17:26 ` Michal Suchanek [this message]
2019-09-12 17:26   ` [PATCH v8 4/7] powerpc/perf: consolidate valid_user_sp Michal Suchanek
2019-09-12 17:26 ` [PATCH v8 5/7] powerpc/64: make buildable without CONFIG_COMPAT Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek
2019-09-12 18:02   ` Christophe Leroy
2019-09-12 18:02     ` Christophe Leroy
2019-09-12 18:26     ` Michal Suchánek
2019-09-12 18:26       ` Michal Suchánek
2019-09-12 19:36       ` Christophe Leroy
2019-09-12 19:36         ` Christophe Leroy
2019-09-12 20:19         ` Michal Suchánek
2019-09-12 20:19           ` Michal Suchánek
2019-09-12 19:46     ` [PATCH] powerpc/perf: remove current_is_64bit() Michal Suchanek
2019-11-14  9:07       ` Michael Ellerman
2019-09-12 17:26 ` [PATCH v8 6/7] powerpc/64: Make COMPAT user-selectable disabled on littleendian by default Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek
2019-09-12 17:26 ` [PATCH v8 7/7] powerpc/perf: split callchain.c by bitness Michal Suchanek
2019-09-12 17:26   ` Michal Suchanek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6429623dfb3f92e45c9d403194e16943eb51da79.1568306311.git.msuchanek@suse.de \
    --to=msuchanek@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=allison@lohutok.net \
    --cc=andrew.donnellan@au1.ibm.com \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=christophe.leroy@c-s.fr \
    --cc=david@redhat.com \
    --cc=diana.craciun@nxp.com \
    --cc=ebiederm@xmission.com \
    --cc=firoz.khan@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hbathini@linux.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=joel@jms.id.au \
    --cc=leitao@debian.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.vnet.ibm.com \
    --cc=mikey@neuling.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=paulus@samba.org \
    --cc=ruscur@russell.cc \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.