Linux Kernel Selftest development
 help / color / mirror / Atom feed
From: linuxram at us.ibm.com (Ram Pai)
Subject: [PATCH v12 16/22] selftests/vm: fix an assertion in test_pkey_alloc_exhaust()
Date: Wed, 21 Feb 2018 17:55:35 -0800	[thread overview]
Message-ID: <1519264541-7621-17-git-send-email-linuxram@us.ibm.com> (raw)
In-Reply-To: <1519264541-7621-1-git-send-email-linuxram@us.ibm.com>

The maximum number of keys that can be allocated has to
take into consideration, that some keys are reserved by
the architecture for   specific   purpose. Hence cannot
be allocated.

Fix the assertion in test_pkey_alloc_exhaust()

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/pkey-helpers.h    |   14 ++++++++++++++
 tools/testing/selftests/vm/protection_keys.c |    9 ++++-----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/vm/pkey-helpers.h b/tools/testing/selftests/vm/pkey-helpers.h
index 88ef58f..67f9b0f 100644
--- a/tools/testing/selftests/vm/pkey-helpers.h
+++ b/tools/testing/selftests/vm/pkey-helpers.h
@@ -416,4 +416,18 @@ static inline int get_start_key(void)
 #endif
 }
 
+static inline int arch_reserved_keys(void)
+{
+#if defined(__i386__) || defined(__x86_64__) /* arch */
+	return NR_RESERVED_PKEYS;
+#elif __powerpc64__ /* arch */
+	if (sysconf(_SC_PAGESIZE) == 4096)
+		return NR_RESERVED_PKEYS_4K;
+	else
+		return NR_RESERVED_PKEYS_64K;
+#else /* arch */
+	NOT SUPPORTED
+#endif /* arch */
+}
+
 #endif /* _PKEYS_HELPER_H */
diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
index 58da5a0..aae6771 100644
--- a/tools/testing/selftests/vm/protection_keys.c
+++ b/tools/testing/selftests/vm/protection_keys.c
@@ -1167,12 +1167,11 @@ void test_pkey_alloc_exhaust(int *ptr, u16 pkey)
 	pkey_assert(i < NR_PKEYS*2);
 
 	/*
-	 * There are 16 pkeys supported in hardware.  One is taken
-	 * up for the default (0) and another can be taken up by
-	 * an execute-only mapping.  Ensure that we can allocate
-	 * at least 14 (16-2).
+	 * There are NR_PKEYS pkeys supported in hardware. arch_reserved_keys()
+	 * are reserved. One   can   be   taken   up by an execute-only mapping.
+	 * Ensure that we can allocate at least the remaining.
 	 */
-	pkey_assert(i >= NR_PKEYS-2);
+	pkey_assert(i >= (NR_PKEYS-arch_reserved_keys()-1));
 
 	for (i = 0; i < nr_allocated_pkeys; i++) {
 		err = sys_pkey_free(allocated_pkeys[i]);
-- 
1.7.1

--
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: linuxram@us.ibm.com (Ram Pai)
Subject: [PATCH v12 16/22] selftests/vm: fix an assertion in test_pkey_alloc_exhaust()
Date: Wed, 21 Feb 2018 17:55:35 -0800	[thread overview]
Message-ID: <1519264541-7621-17-git-send-email-linuxram@us.ibm.com> (raw)
Message-ID: <20180222015535.Ol9_7343lXepjF56lkOZ2yaKtMmjX5OTxO82FMXYbk8@z> (raw)
In-Reply-To: <1519264541-7621-1-git-send-email-linuxram@us.ibm.com>

The maximum number of keys that can be allocated has to
take into consideration, that some keys are reserved by
the architecture for   specific   purpose. Hence cannot
be allocated.

Fix the assertion in test_pkey_alloc_exhaust()

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/pkey-helpers.h    |   14 ++++++++++++++
 tools/testing/selftests/vm/protection_keys.c |    9 ++++-----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/vm/pkey-helpers.h b/tools/testing/selftests/vm/pkey-helpers.h
index 88ef58f..67f9b0f 100644
--- a/tools/testing/selftests/vm/pkey-helpers.h
+++ b/tools/testing/selftests/vm/pkey-helpers.h
@@ -416,4 +416,18 @@ static inline int get_start_key(void)
 #endif
 }
 
+static inline int arch_reserved_keys(void)
+{
+#if defined(__i386__) || defined(__x86_64__) /* arch */
+	return NR_RESERVED_PKEYS;
+#elif __powerpc64__ /* arch */
+	if (sysconf(_SC_PAGESIZE) == 4096)
+		return NR_RESERVED_PKEYS_4K;
+	else
+		return NR_RESERVED_PKEYS_64K;
+#else /* arch */
+	NOT SUPPORTED
+#endif /* arch */
+}
+
 #endif /* _PKEYS_HELPER_H */
diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
index 58da5a0..aae6771 100644
--- a/tools/testing/selftests/vm/protection_keys.c
+++ b/tools/testing/selftests/vm/protection_keys.c
@@ -1167,12 +1167,11 @@ void test_pkey_alloc_exhaust(int *ptr, u16 pkey)
 	pkey_assert(i < NR_PKEYS*2);
 
 	/*
-	 * There are 16 pkeys supported in hardware.  One is taken
-	 * up for the default (0) and another can be taken up by
-	 * an execute-only mapping.  Ensure that we can allocate
-	 * at least 14 (16-2).
+	 * There are NR_PKEYS pkeys supported in hardware. arch_reserved_keys()
+	 * are reserved. One   can   be   taken   up by an execute-only mapping.
+	 * Ensure that we can allocate at least the remaining.
 	 */
-	pkey_assert(i >= NR_PKEYS-2);
+	pkey_assert(i >= (NR_PKEYS-arch_reserved_keys()-1));
 
 	for (i = 0; i < nr_allocated_pkeys; i++) {
 		err = sys_pkey_free(allocated_pkeys[i]);
-- 
1.7.1

--
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

  parent reply	other threads:[~2018-02-22  1:55 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22  1:55 [PATCH v12 00/22] selftests, powerpc, x86 : Memory Protection Keys linuxram
2018-02-22  1:55 ` Ram Pai
2018-02-22  1:55 ` [PATCH v12 01/22] selftests/x86: Move protecton key selftest to arch neutral directory linuxram
2018-02-22  1:55   ` Ram Pai
2018-02-22  5:51   ` mingo
2018-02-22  5:51     ` Ingo Molnar
2018-02-22  1:55 ` [PATCH v12 02/22] selftests/vm: rename all references to pkru to a generic name linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 21:55   ` dave.hansen
2018-03-16 21:55     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 03/22] selftests/vm: move generic definitions to header file linuxram
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55 ` [PATCH v12 04/22] selftests/vm: typecast the pkey register linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 21:58   ` dave.hansen
2018-03-16 21:58     ` Dave Hansen
2018-03-26 19:38     ` bauerman
2018-03-26 19:38       ` Thiago Jung Bauermann
2018-02-22  1:55 ` [PATCH v12 05/22] selftests/vm: generic function to handle shadow key register linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:05   ` dave.hansen
2018-03-16 22:05     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 06/22] selftests/vm: fix the wrong assert in pkey_disable_set() linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:06   ` dave.hansen
2018-03-16 22:06     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 07/22] selftests/vm: fixed bugs in pkey_disable_clear() linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:08   ` dave.hansen
2018-03-16 22:08     ` Dave Hansen
2018-03-28 20:47     ` bauerman
2018-03-28 20:47       ` Thiago Jung Bauermann
2018-03-28 20:55       ` dave.hansen
2018-03-28 20:55         ` Dave Hansen
2018-03-28 23:51         ` bauerman
2018-03-28 23:51           ` Thiago Jung Bauermann
2018-02-22  1:55 ` [PATCH v12 08/22] selftests/vm: clear the bits in shadow reg when a pkey is freed linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:10   ` dave.hansen
2018-03-16 22:10     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:13   ` dave.hansen
2018-03-16 22:13     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 10/22] selftests/vm: introduce two arch independent abstraction linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:15   ` dave.hansen
2018-03-16 22:15     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 11/22] selftests/vm: pkey register should match shadow pkey linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:19   ` dave.hansen
2018-03-16 22:19     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 12/22] selftests/vm: generic cleanup linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:22   ` dave.hansen
2018-03-16 22:22     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 13/22] selftests/vm: powerpc implementation for generic abstraction linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:23   ` dave.hansen
2018-03-16 22:23     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 14/22] selftests/vm: clear the bits in shadow reg when a pkey is freed linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:24   ` dave.hansen
2018-03-16 22:24     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 15/22] selftests/vm: powerpc implementation to check support for pkey linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:26   ` dave.hansen
2018-03-16 22:26     ` Dave Hansen
2018-02-22  1:55 ` linuxram [this message]
2018-02-22  1:55   ` [PATCH v12 16/22] selftests/vm: fix an assertion in test_pkey_alloc_exhaust() Ram Pai
2018-03-16 22:28   ` dave.hansen
2018-03-16 22:28     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 17/22] selftests/vm: associate key on a mapped page and detect access violation linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:30   ` dave.hansen
2018-03-16 22:30     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 18/22] selftests/vm: associate key on a mapped page and detect write violation linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:30   ` dave.hansen
2018-03-16 22:30     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 19/22] selftests/vm: detect write violation on a mapped access-denied-key page linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:31   ` dave.hansen
2018-03-16 22:31     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 20/22] selftests/vm: testcases must restore pkey-permissions linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:32   ` dave.hansen
2018-03-16 22:32     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 21/22] selftests/vm: sub-page allocator linuxram
2018-02-22  1:55   ` Ram Pai
2018-03-16 22:33   ` dave.hansen
2018-03-16 22:33     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 22/22] selftests/vm: Fix deadlock in protection_keys.c linuxram
2018-02-22  1:55   ` Ram Pai
2018-02-25 23:19   ` bsingharora
2018-02-25 23:19     ` Balbir Singh
2018-03-16 22:34   ` dave.hansen
2018-03-16 22:34     ` 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=1519264541-7621-17-git-send-email-linuxram@us.ibm.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