* [PATCH] [v2] selftests, x86, pkeys: test with random, unallocated protection keys
@ 2017-02-24 0:23 Dave Hansen
2017-02-24 13:31 ` Kirill A. Shutemov
0 siblings, 1 reply; 2+ messages in thread
From: Dave Hansen @ 2017-02-24 0:23 UTC (permalink / raw)
To: linux-kernel; +Cc: x86, Dave Hansen, kirill.shutemov, shuah, linux-kselftest
Changes from v1:
* Also generate random negative numbers for protection key
--
From: Dave Hansen <dave.hansen@linux.intel.com>
The kernel pkeys code had a minor bug where it did some large shifts
to an integer which is undefined behavior in C. It didn't cause any
real harm, but it is screwy behavior that the kernel should have
rejected.
Add a test case for this.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: x86@kernel.org
---
b/tools/testing/selftests/x86/protection_keys.c | 25 ++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff -puN tools/testing/selftests/x86/protection_keys.c~pkeys-better-selftests-of-random-pkey tools/testing/selftests/x86/protection_keys.c
--- a/tools/testing/selftests/x86/protection_keys.c~pkeys-better-selftests-of-random-pkey 2017-02-23 14:24:34.323744591 -0800
+++ b/tools/testing/selftests/x86/protection_keys.c 2017-02-23 16:14:06.101005910 -0800
@@ -1123,6 +1123,30 @@ void test_pkey_syscalls_on_non_allocated
}
/* Assumes that all pkeys other than 'pkey' are unallocated */
+void test_pkey_syscalls_on_non_allocated_random_pkey(int *ptr, u16 pkey)
+{
+ int err;
+ int nr_tests = 0;
+
+ while (nr_tests < 1000) {
+ int test_pkey = rand() - RAND_MAX/2;
+
+ /* do not test with the pkey we know is good */
+ if (pkey == test_pkey)
+ continue;
+
+ dprintf1("trying free/mprotect bad pkey: %2d\n", test_pkey);
+ err = sys_pkey_free(test_pkey);
+ pkey_assert(err);
+
+ err = sys_mprotect_pkey(ptr, PAGE_SIZE, PROT_READ, test_pkey);
+ pkey_assert(err);
+
+ nr_tests++;
+ }
+}
+
+/* Assumes that all pkeys other than 'pkey' are unallocated */
void test_pkey_syscalls_bad_args(int *ptr, u16 pkey)
{
int err;
@@ -1320,6 +1344,7 @@ void (*pkey_tests[])(int *ptr, u16 pkey)
test_executing_on_unreadable_memory,
test_ptrace_of_child,
test_pkey_syscalls_on_non_allocated_pkey,
+ test_pkey_syscalls_on_non_allocated_random_pkey,
test_pkey_syscalls_bad_args,
test_pkey_alloc_exhaust,
};
_
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] [v2] selftests, x86, pkeys: test with random, unallocated protection keys
2017-02-24 0:23 [PATCH] [v2] selftests, x86, pkeys: test with random, unallocated protection keys Dave Hansen
@ 2017-02-24 13:31 ` Kirill A. Shutemov
0 siblings, 0 replies; 2+ messages in thread
From: Kirill A. Shutemov @ 2017-02-24 13:31 UTC (permalink / raw)
To: Dave Hansen; +Cc: linux-kernel, x86, kirill.shutemov, shuah, linux-kselftest
On Thu, Feb 23, 2017 at 04:23:39PM -0800, Dave Hansen wrote:
>
>
> Changes from v1:
> * Also generate random negative numbers for protection key
>
> --
> From: Dave Hansen <dave.hansen@linux.intel.com>
>
> The kernel pkeys code had a minor bug where it did some large shifts
> to an integer which is undefined behavior in C. It didn't cause any
> real harm, but it is screwy behavior that the kernel should have
> rejected.
>
> Add a test case for this.
>
> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
--
Kirill A. Shutemov
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-02-24 13:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-24 0:23 [PATCH] [v2] selftests, x86, pkeys: test with random, unallocated protection keys Dave Hansen
2017-02-24 13:31 ` Kirill A. Shutemov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox