lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 575/593] selftests/vm/pkeys: handle negative sys_pkey_alloc() return code
    Date
    From: Dave Hansen <dave.hansen@linux.intel.com>

    [ 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: 5f23f6d082a9 ("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>
    ---
    tools/testing/selftests/vm/protection_keys.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
    index 9ee0ae5d3e06..356d62fca27f 100644
    --- a/tools/testing/selftests/vm/protection_keys.c
    +++ b/tools/testing/selftests/vm/protection_keys.c
    @@ -510,7 +510,7 @@ int alloc_pkey(void)
    " shadow: 0x%016llx\n",
    __func__, __LINE__, ret, __read_pkey_reg(),
    shadow_pkey_reg);
    - if (ret) {
    + if (ret > 0) {
    /* clear both the bits: */
    shadow_pkey_reg = set_pkey_bits(shadow_pkey_reg, ret,
    ~PKEY_MASK);
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:40    [W:2.649 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site