Dave Hansen
58fa4b36ab
selftests/vm/pkeys: refill shadow register after implicit kernel write
...
[ Upstream commit 6039ca254979694c5362dfebadd105e286c397bb ]
The pkey test code keeps a "shadow" of the pkey register around. This
ensures that any bugs which might write to the register can be caught more
quickly.
Generally, userspace has a good idea when the kernel is going to write to
the register. For instance, alloc_pkey() is passed a permission mask.
The caller of alloc_pkey() can update the shadow based on the return value
and the mask.
But, the kernel can also modify the pkey register in a more sneaky way.
For mprotect(PROT_EXEC) mappings, the kernel will allocate a pkey and
write the pkey register to create an execute-only mapping. The kernel
never tells userspace what key it uses for this.
This can cause the test to fail with messages like:
protection_keys_64.2: pkey-helpers.h:132: _read_pkey_reg: Assertion `pkey_reg == shadow_pkey_reg' failed.
because the shadow was not updated with the new kernel-set value.
Forcibly update the shadow value immediately after an mprotect().
Link: https://lkml.kernel.org/r/20210611164200.EF76AB73@viggo.jf.intel.com
Fixes: 6af17cf89e
("x86/pkeys/selftests: Add PROT_EXEC test")
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Sandipan Das <sandipan@linux.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2021-07-14 16:56:52 +02:00
Dave Hansen
1dd18fda3e
selftests/vm/pkeys: handle negative sys_pkey_alloc() return code
...
[ Upstream commit bf68294a2ec39ed7fec6a5b45d52034e6983157a ]
The alloc_pkey() sefltest function wraps the sys_pkey_alloc() system call.
On success, it updates its "shadow" register value because
sys_pkey_alloc() updates the real register.
But, the success check is wrong. pkey_alloc() considers any non-zero
return code to indicate success where the pkey register will be modified.
This fails to take negative return codes into account.
Consider only a positive return value as a successful call.
Link: https://lkml.kernel.org/r/20210611164157.87AB4246@viggo.jf.intel.com
Fixes: 5f23f6d082
("x86/pkeys: Add self-tests")
Reported-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com >
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Sandipan Das <sandipan@linux.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2021-07-14 16:56:52 +02:00
Dave Hansen
92125cb883
selftests/vm/pkeys: fix alloc_random_pkey() to make it really, really random
...
[ Upstream commit f36ef407628835a7d7fb3d235b1f1aac7022d9a3 ]
Patch series "selftests/vm/pkeys: Bug fixes and a new test".
There has been a lot of activity on the x86 front around the XSAVE
architecture which is used to context-switch processor state (among other
things). In addition, AMD has recently joined the protection keys club by
adding processor support for PKU.
The AMD implementation helped uncover a kernel bug around the PKRU "init
state", which actually applied to Intel's implementation but was just
harder to hit. This series adds a test which is expected to help find
this class of bug both on AMD and Intel. All the work around pkeys on x86
also uncovered a few bugs in the selftest.
This patch (of 4):
The "random" pkey allocation code currently does the good old:
srand((unsigned int)time(NULL));
*But*, it unfortunately does this on every random pkey allocation.
There may be thousands of these a second. time() has a one second
resolution. So, each time alloc_random_pkey() is called, the PRNG is
*RESET* to time(). This is nasty. Normally, if you do:
srand(<ANYTHING>);
foo = rand();
bar = rand();
You'll be quite guaranteed that 'foo' and 'bar' are different. But, if
you do:
srand(1);
foo = rand();
srand(1);
bar = rand();
You are quite guaranteed that 'foo' and 'bar' are the *SAME*. The recent
"fix" effectively forced the test case to use the same "random" pkey for
the whole test, unless the test run crossed a second boundary.
Only run srand() once at program startup.
This explains some very odd and persistent test failures I've been seeing.
Link: https://lkml.kernel.org/r/20210611164153.91B76FB8@viggo.jf.intel.com
Link: https://lkml.kernel.org/r/20210611164155.192D00FF@viggo.jf.intel.com
Fixes: 6e373263ce
("selftests/vm/pkeys: fix alloc_random_pkey() to make it really random")
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Sandipan Das <sandipan@linux.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2021-07-14 16:56:52 +02:00
Mauro Carvalho Chehab
466fb03011
selftests/vm/keys: fix a broken reference at protection_keys.c
...
Changeset 1eecbcdca2
("docs: move protection-keys.rst to the core-api book")
from Jun 7, 2019 converted protection-keys.txt file to ReST.
A recent change at protection_keys.c partially reverted such
changeset, causing it to point to a non-existing file:
- * Tests x86 Memory Protection Keys (see Documentation/core-api/protection-keys.rst)
+ * Tests Memory Protection Keys (see Documentation/vm/protection-keys.txt)
It sounds to me that the changeset that introduced such change
4645e3563673 ("selftests/vm/pkeys: rename all references to pkru to a generic name")
could also have other side effects, as it sounds that it was not
generated against uptream code, but, instead, against a version
older than Jun 7, 2019.
Fixes: 4645e3563673 ("selftests/vm/pkeys: rename all references to pkru to a generic name")
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Link: https://lore.kernel.org/r/cf65aa052669f55b9dc976a5c8026aef5840741d.1592895969.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net >
2020-06-26 10:01:12 -06:00
Sandipan Das
473c3cc86c
selftests: vm: pkeys: use the correct page size on powerpc
...
Both 4K and 64K pages are supported on powerpc. Parts of the selftest
code perform alignment computations based on the PAGE_SIZE macro which is
currently hardcoded to 64K for powerpc. This causes some test failures on
kernels configured with 4K page size.
In some cases, we need to enforce function alignment on page size. Since
this can only be done at build time, 64K is used as the alignment factor
as that also ensures 4K alignment.
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/5dcdfbf3353acdc90f315172e800b49f5ca21299.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
fa17437cb8
selftests/vm/pkeys: test correct behaviour of pkey-0
...
Ensure that pkey-0 is allocated on start and that it can be attached
dynamically in various modes, without failures.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/9b7c54a9b4261894fe0c7e884c70b87214ff8fbb.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
6e2c2d0fb7
selftests/vm/pkeys: introduce a sub-page allocator
...
This introduces a new allocator that allocates 4K hardware pages to back
64K linux pages. This allocator is available only on powerpc.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/c4a82fa962ec71015b994fab1aaf83bdfd091553.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
4e06e718af
selftests/vm/pkeys: detect write violation on a mapped access-denied-key page
...
Detect write-violation on a page to which access-disabled key is
associated much after the page is mapped.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/6a7dd4069ee18a2a51b207a55aa197f3f3c59753.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
39351c1326
selftests/vm/pkeys: associate key on a mapped page and detect write violation
...
Detect write-violation on a page to which write-disabled key is associated
much after the page is mapped.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/6bfe3b3832f8bcfb07d7f2cf116b45197f4587dd.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
aef759db63
selftests/vm/pkeys: associate key on a mapped page and detect access violation
...
Detect access-violation on a page to which access-disabled key is
associated much after the page is mapped.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/4a19cf9252c03dd883887e9002881599e6900d06.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
94c8a223de
selftests/vm/pkeys: improve checks to determine pkey support
...
For the pkeys subsystem to work, both the CPU and the kernel need to have
support. So, additionally check if the kernel supports pkeys apart from
the CPU feature checks.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/8fb76c63ebdadcf068ecd2d23731032e195cd364.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
b0acc5d6bf
selftests/vm/pkeys: fix assertion in test_pkey_alloc_exhaust()
...
Some pkeys which are valid on the hardware are reserved and not available
for application use. These keys cannot be allocated.
test_pkey_alloc_exhaust() tries to account for these and has an assertion
which validates if all available pkeys have been exahaustively allocated.
However, the expression that is currently used is only valid for x86. On
powerpc, a pkey is additionally reserved as compared to x86. Hence, the
assertion is made to use an arch-specific helper to get the correct count
of reserved pkeys.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/38b08d0318820ae46af3aa6048384fd8056c3df7.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
589944b53b
selftests/vm/pkeys: introduce powerpc support
...
This makes use of the abstractions added earlier and introduces support
for powerpc.
For powerpc, after receiving the SIGSEGV, the signal handler must
explicitly restore access permissions for the faulting pkey to allow the
test to continue. As this makes use of pkey_access_allow(), all of its
dependencies and other similar functions have been moved ahead of the
signal handler.
[sandipan@linux.ibm.com: fix powerpc access right updates]
Link: http://lkml.kernel.org/r/5f65cf37be993760de8112a88da194e3ccbb2bf8.1588959697.git.sandipan@linux.ibm.com
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/b121e9fd33789ed9195276e32fe4e80bb6b88a31.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
604c496b22
selftests/vm/pkeys: introduce generic pkey abstractions
...
This introduces some generic abstractions and provides the corresponding
architecture-specfic implementations for these abstractions.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/1c977915e69fb7767fb0dbd55ac7656554b15b93.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Sandipan Das
57bcb57da2
selftests: vm: pkeys: use the correct huge page size
...
The huge page size can vary across architectures. This will ensure that
the correct huge page size is used when accessing the hugetlb controls
under sysfs. Instead of using a hardcoded page size (i.e. 2MB), this now
uses the HPAGE_SIZE macro which is arch-specific.
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/66882a5d6e45c73c3a52bc4aef9754e48afa4f88.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
6e373263ce
selftests/vm/pkeys: fix alloc_random_pkey() to make it really random
...
alloc_random_pkey() was allocating the same pkey every time. Not all
pkeys were geting tested. This fixes it.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/0162f55816d4e783a0d6e49e554d0ab9a3c9a23b.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
ea5f95c3d6
selftests/vm/pkeys: fix assertion in pkey_disable_set/clear()
...
In some cases, a pkey's bits need not necessarily change in a way that the
value of the pkey register increases when performing a pkey_disable_set()
or decreases when performing a pkey_disable_clear().
For example, on powerpc, if a pkey's current state is PKEY_DISABLE_ACCESS
and we perform a pkey_write_disable() on it, the bits still remain the
same. We will observe something similar when the pkey's current state is
0 and a pkey_access_enable() is performed on it.
Either case would cause some assertions to fail. This fixes the problem.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/8240665131e43fc93eed4eea8194676c1ea39a7f.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:27 -07:00
Ram Pai
11551801a7
selftests/vm/pkeys: fix pkey_disable_clear()
...
Currently, pkey_disable_clear() sets the specified bits instead clearing
them. This has been dead code up to now because its only callers i.e.
pkey_access/write_allow() are also unused.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/1f70bca60330a85dca42c3cd98212bb1cdf5a076.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Sandipan Das
0c416bcaef
selftests: vm: pkeys: add helpers for pkey bits
...
This introduces some functions that help with setting or clearing bits of
a particular pkey. This also adds an abstraction for getting a pkey's bit
position in the pkey register as this may vary across architectures.
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/2ad9705f4f68ca7e72155cc583415e5a979546f1.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Sandipan Das
4dbdd947cb
selftests: vm: pkeys: Use sane types for pkey register
...
The size of the pkey register can vary across architectures. This
converts the data type of all its references to u64 in preparation for
multi-arch support.
To keep the definition of the u64 type consistent and remove format
specifier related warnings, __SANE_USERSPACE_TYPES__ is defined as
suggested by Michael Ellerman.
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Ram Pai <linuxram@us.ibm.com >
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/d3e271798455d940e395e56e1ff1e82a31bcb7aa.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Thiago Jung Bauermann
53555e2b4d
selftests/vm/pkeys: move some definitions to arch-specific header
...
In preparation for multi-arch support, move definitions which
have arch-specific values to x86-specific header.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/d58eba2930059c8b209eefd6d5b48fe922a5b010.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Ram Pai
5461c6625f
selftests/vm/pkeys: move generic definitions to header file
...
Moved all the generic definition and helper functions to the
header file.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/57177f99e92a51295956715d5f2d5688a4d13927.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Ram Pai
c4273c7f0e
selftests/vm/pkeys: rename all references to pkru to a generic name
...
This renames PKRU references to "pkey_reg" or "pkey" based on
the usage.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Reviewed-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/2c6970bc6d2e99796cd5cc1101bd2ecf7eccb937.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00
Ram Pai
804eb64615
selftests/x86/pkeys: move selftests to arch-neutral directory
...
Patch series "selftests, powerpc, x86: Memory Protection Keys", v19.
Memory protection keys enables an application to protect its address space
from inadvertent access by its own code.
This feature is now enabled on powerpc and has been available since
4.16-rc1. The patches move the selftests to arch neutral directory and
enhance their test coverage.
Tested on powerpc64 and x86_64 (Skylake-SP).
This patch (of 24):
Move selftest files from tools/testing/selftests/x86/ to
tools/testing/selftests/vm/.
Signed-off-by: Ram Pai <linuxram@us.ibm.com >
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com >
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Ingo Molnar <mingo@kernel.org >
Acked-by: Dave Hansen <dave.hansen@intel.com >
Cc: Dave Hansen <dave.hansen@intel.com >
Cc: Florian Weimer <fweimer@redhat.com >
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com >
Cc: Michal Hocko <mhocko@kernel.org >
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com >
Cc: Michal Suchanek <msuchanek@suse.de >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Shuah Khan <shuah@kernel.org >
Link: http://lkml.kernel.org/r/14d25194c3e2e652e0047feec4487e269e76e8c9.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-04 19:06:26 -07:00