From: Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Subject: [RFC PATCH 0/5] powerpc: Misc. ptrace regset fixes
Date: Thu, 7 Jun 2018 12:25:29 -0300 [thread overview]
Message-ID: <20180607152534.29427-1-pedromfc@linux.vnet.ibm.com> (raw)
This series attempts to fix a few issues with ptrace regsets.
Patch 1 simply inverts the active predicate for ebb_set. I don't know
if there was a reason for having opposite predicates in
ebb_get/ebb_set, but I assumed this was a typo.
Patch 2 adds the usual HTM prologue for regsets to the tm_cgpr32
get/set functions, so that the cgprs are flushed. I don't really
understand the need for flushing the fp and altivec states, but I
copied that over since it was done in the regular tm_cgpr get/set
functions.
Patch 3 changes the pmu get/set functions so that they don't read or
write outside the bounds of thread_struct.mmcr0. The endianess of the
kernel is used to determine where the mmcr0 word should be placed (or
read from) in its corresponding 64-bit slot in the regset. I am not
sure if this is the correct way to go, or if the endianess of the
thread being traced should determine this position (can the kernel run
threads with a different endianess?). I used the kernel endianess
because that is what seems to happen for other registers smaller than
their regset fields (for instance, it seems that checkpointed CR is
saved by the kernel as a doubleword, so the the position of the word
depends on the kernel's endianess). The rest of the function assumes
that unsigned longs are doublewords, so the patch assumes that an
unsigned is a word. This patch (and the original pmu_get/set
functions) might not work if the kernel is compiled in 32 bits.
Patch 4 adds the VSX regset to compat_regsets, which could cause out
of bounds writes in fs/binfmt_elf.c.
Patch 5 adds the PMU regset to compat_regsets.
I also noticed that the regset for CGPRs for 32-bit threads has 48 * 8
bytes (same as the one for 64-bit threads), but the data only occupies
the first 48 * 4 bytes (like for the 32-bit GPR regset). I am not sure
if this was intended, or if it can be changed now that other programs
might already assume the 48 * 8 size. If the kernel is compiled in
32-bits, the size will change (because it depends on sizeof (long)),
but I don't know if HTM and the corresponding regsets are supported in
the first place for a 32-bit kernel.
I haven't added the PKEY regset to compat_regsets. Does that make
sense for 32-bit threads?
Pedro Franco de Carvalho (5):
powerpc: Fix inverted active predicate for setting the EBB regset
powerpc: Flush checkpointed gpr state for 32-bit processes in ptrace
powerpc: Fix pmu get/set functions
powerpc: Add VSX regset to compat_regsets
powerpc: Add PMU regset to compat_regsets
arch/powerpc/kernel/ptrace.c | 65 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 60 insertions(+), 5 deletions(-)
--
2.13.6
next reply other threads:[~2018-06-07 15:25 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-07 15:25 Pedro Franco de Carvalho [this message]
2018-06-07 15:25 ` [RFC PATCH 1/5] powerpc: Fix inverted active predicate for setting the EBB regset Pedro Franco de Carvalho
2018-06-13 2:15 ` Michael Ellerman
2018-06-13 4:09 ` Michael Ellerman
2018-06-14 13:52 ` Pedro Franco de Carvalho
2018-06-07 15:25 ` [RFC PATCH 2/5] powerpc: Flush checkpointed gpr state for 32-bit processes in ptrace Pedro Franco de Carvalho
2018-06-13 2:19 ` Michael Ellerman
2018-06-14 13:55 ` Pedro Franco de Carvalho
2018-06-19 19:54 ` [PATCH 1/2] " Pedro Franco de Carvalho
2024-03-12 8:07 ` Christophe Leroy
2018-06-19 19:54 ` [PATCH 2/2] powerpc: Use helper function to flush TM state " Pedro Franco de Carvalho
2018-06-07 15:25 ` [RFC PATCH 3/5] powerpc: Fix pmu get/set functions Pedro Franco de Carvalho
2018-06-07 15:25 ` [RFC PATCH 4/5] powerpc: Add VSX regset to compat_regsets Pedro Franco de Carvalho
2018-06-07 15:25 ` [RFC PATCH 5/5] powerpc: Add PMU " Pedro Franco de Carvalho
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=20180607152534.29427-1-pedromfc@linux.vnet.ibm.com \
--to=pedromfc@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).