From: dave.hansen at intel.com (Dave Hansen)
Subject: [PATCH v14 12/22] selftests/vm: pkey register should match shadow pkey
Date: Wed, 18 Jul 2018 09:00:11 -0700 [thread overview]
Message-ID: <13e29efb-6a75-d6c8-e9a8-9e7495b88e00@intel.com> (raw)
In-Reply-To: <1531835365-32387-13-git-send-email-linuxram@us.ibm.com>
On 07/17/2018 06:49 AM, Ram Pai wrote:
> expected_pkey_fault() is comparing the contents of pkey
> register with 0. This may not be true all the time. There
> could be bits set by default by the architecture
> which can never be changed. Hence compare the value against
> shadow pkey register, which is supposed to track the bits
> accurately all throughout
This is getting dangerously close to full sentences that actually
describe the patch. You forgot a period, but much this is a substantial
improvement over earlier parts of the series. Thanks for writing this,
seriously.
> cc: Dave Hansen <dave.hansen at intel.com>
> cc: Florian Weimer <fweimer at redhat.com>
> Signed-off-by: Ram Pai <linuxram at us.ibm.com>
> ---
> tools/testing/selftests/vm/protection_keys.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
> index 2e448e0..f50cce8 100644
> --- a/tools/testing/selftests/vm/protection_keys.c
> +++ b/tools/testing/selftests/vm/protection_keys.c
> @@ -913,10 +913,10 @@ void expected_pkey_fault(int pkey)
> pkey_assert(last_si_pkey == pkey);
>
> /*
> - * The signal handler shold have cleared out PKEY register to let the
> + * The signal handler should have cleared out pkey-register to let the
> * test program continue. We now have to restore it.
> */
... while I appreciate the spelling corrections, and I would totally ack
a patch that fixed them in one fell swoop, could we please segregate the
random spelling corrections from code fixes unless you touch those lines
otherwise?
> - if (__read_pkey_reg() != 0)
> + if (__read_pkey_reg() != shadow_pkey_reg)
> pkey_assert(0);
>
> __write_pkey_reg(shadow_pkey_reg);
I know this is a one-line change, but I don't fully understand it.
On x86, if we take a pkey fault, we clear PKRU entirely (via the
on-stack XSAVE state that is restored at sigreturn) which allows the
faulting instruction to resume and execute normally. That's what this
check is looking for: Did the signal handler clear PKRU?
Now, you're saying that powerpc might not clear it. That makes sense.
While PKRU's state here is obvious, it isn't patently obvious to me what
shadow_pkey_reg's state is. In fact, looking at it, I don't see the
signal handler manipulating the shadow. So, how can this patch work?
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: dave.hansen@intel.com (Dave Hansen)
Subject: [PATCH v14 12/22] selftests/vm: pkey register should match shadow pkey
Date: Wed, 18 Jul 2018 09:00:11 -0700 [thread overview]
Message-ID: <13e29efb-6a75-d6c8-e9a8-9e7495b88e00@intel.com> (raw)
Message-ID: <20180718160011.t9mHTRscoDRRUKA8jH3gcSQzAMZLeVLZLIDVy1Ygigg@z> (raw)
In-Reply-To: <1531835365-32387-13-git-send-email-linuxram@us.ibm.com>
On 07/17/2018 06:49 AM, Ram Pai wrote:
> expected_pkey_fault() is comparing the contents of pkey
> register with 0. This may not be true all the time. There
> could be bits set by default by the architecture
> which can never be changed. Hence compare the value against
> shadow pkey register, which is supposed to track the bits
> accurately all throughout
This is getting dangerously close to full sentences that actually
describe the patch. You forgot a period, but much this is a substantial
improvement over earlier parts of the series. Thanks for writing this,
seriously.
> cc: Dave Hansen <dave.hansen at intel.com>
> cc: Florian Weimer <fweimer at redhat.com>
> Signed-off-by: Ram Pai <linuxram at us.ibm.com>
> ---
> tools/testing/selftests/vm/protection_keys.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
> index 2e448e0..f50cce8 100644
> --- a/tools/testing/selftests/vm/protection_keys.c
> +++ b/tools/testing/selftests/vm/protection_keys.c
> @@ -913,10 +913,10 @@ void expected_pkey_fault(int pkey)
> pkey_assert(last_si_pkey == pkey);
>
> /*
> - * The signal handler shold have cleared out PKEY register to let the
> + * The signal handler should have cleared out pkey-register to let the
> * test program continue. We now have to restore it.
> */
... while I appreciate the spelling corrections, and I would totally ack
a patch that fixed them in one fell swoop, could we please segregate the
random spelling corrections from code fixes unless you touch those lines
otherwise?
> - if (__read_pkey_reg() != 0)
> + if (__read_pkey_reg() != shadow_pkey_reg)
> pkey_assert(0);
>
> __write_pkey_reg(shadow_pkey_reg);
I know this is a one-line change, but I don't fully understand it.
On x86, if we take a pkey fault, we clear PKRU entirely (via the
on-stack XSAVE state that is restored at sigreturn) which allows the
faulting instruction to resume and execute normally. That's what this
check is looking for: Did the signal handler clear PKRU?
Now, you're saying that powerpc might not clear it. That makes sense.
While PKRU's state here is obvious, it isn't patently obvious to me what
shadow_pkey_reg's state is. In fact, looking at it, I don't see the
signal handler manipulating the shadow. So, how can this patch work?
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-07-18 16:00 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 13:49 [PATCH v14 00/22] selftests, powerpc, x86 : Memory Protection Keys linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 01/22] selftests/x86: Move protecton key selftest to arch neutral directory linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:25 ` dave.hansen
2018-07-18 15:25 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 02/22] selftests/vm: rename all references to pkru to a generic name linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 03/22] selftests/vm: move generic definitions to header file linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:26 ` dave.hansen
2018-07-18 15:26 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 04/22] selftests/vm: move arch-specific definitions to arch-specific header linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:27 ` dave.hansen
2018-07-18 15:27 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 05/22] selftests/vm: Make gcc check arguments of sigsafe_printf() linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 06/22] selftests/vm: typecast the pkey register linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:32 ` dave.hansen
2018-07-18 15:32 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 07/22] selftests/vm: generic function to handle shadow key register linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:34 ` dave.hansen
2018-07-18 15:34 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 08/22] selftests/vm: fix the wrong assert in pkey_disable_set() linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:36 ` dave.hansen
2018-07-18 15:36 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 09/22] selftests/vm: fixed bugs in pkey_disable_clear() linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:43 ` dave.hansen
2018-07-18 15:43 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 10/22] selftests/vm: fix alloc_random_pkey() to make it really random linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:45 ` dave.hansen
2018-07-18 15:45 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 11/22] selftests/vm: introduce two arch independent abstraction linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 15:52 ` dave.hansen
2018-07-18 15:52 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 12/22] selftests/vm: pkey register should match shadow pkey linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:00 ` dave.hansen [this message]
2018-07-18 16:00 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 13/22] selftests/vm: generic cleanup linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:06 ` dave.hansen
2018-07-18 16:06 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 14/22] selftests/vm: Introduce generic abstractions linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:38 ` dave.hansen
2018-07-18 16:38 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 15/22] selftests/vm: powerpc implementation to check support for pkey linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:42 ` dave.hansen
2018-07-18 16:42 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 16/22] selftests/vm: fix an assertion in test_pkey_alloc_exhaust() linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:52 ` dave.hansen
2018-07-18 16:52 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 17/22] selftests/vm: associate key on a mapped page and detect access violation linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 18/22] selftests/vm: associate key on a mapped page and detect write violation linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 19/22] selftests/vm: detect write violation on a mapped access-denied-key page linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 20/22] selftests/vm: testcases must restore pkey-permissions linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 16:56 ` dave.hansen
2018-07-18 16:56 ` Dave Hansen
2018-07-17 13:49 ` [PATCH v14 21/22] selftests/vm: sub-page allocator linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-17 13:49 ` [PATCH v14 22/22] selftests/vm: test correct behavior of pkey-0 linuxram
2018-07-17 13:49 ` Ram Pai
2018-07-18 17:03 ` dave.hansen
2018-07-18 17:03 ` Dave Hansen
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=13e29efb-6a75-d6c8-e9a8-9e7495b88e00@intel.com \
--to=linux-kselftest@vger.kernel.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