mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
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>
This commit is contained in:
parent
11551801a7
commit
ea5f95c3d6
@ -400,7 +400,7 @@ void pkey_disable_set(int pkey, int flags)
|
||||
dprintf1("%s(%d) pkey_reg: 0x%016llx\n",
|
||||
__func__, pkey, read_pkey_reg());
|
||||
if (flags)
|
||||
pkey_assert(read_pkey_reg() > orig_pkey_reg);
|
||||
pkey_assert(read_pkey_reg() >= orig_pkey_reg);
|
||||
dprintf1("END<---%s(%d, 0x%x)\n", __func__,
|
||||
pkey, flags);
|
||||
}
|
||||
@ -431,7 +431,7 @@ void pkey_disable_clear(int pkey, int flags)
|
||||
dprintf1("%s(%d) pkey_reg: 0x%016llx\n", __func__,
|
||||
pkey, read_pkey_reg());
|
||||
if (flags)
|
||||
assert(read_pkey_reg() < orig_pkey_reg);
|
||||
assert(read_pkey_reg() <= orig_pkey_reg);
|
||||
}
|
||||
|
||||
void pkey_write_allow(int pkey)
|
||||
|
Loading…
Reference in New Issue
Block a user