• Thiago Jung Bauermann's avatar
    powerpc/pkeys: Fix reading of ibm, processor-storage-keys property · c716a25b
    Thiago Jung Bauermann authored
    scan_pkey_feature() uses of_property_read_u32_array() to read the
    ibm,processor-storage-keys property and calls be32_to_cpu() on the
    value it gets. The problem is that of_property_read_u32_array() already
    returns the value converted to the CPU byte order.
    
    The value of pkeys_total ends up more or less sane because there's a min()
    call in pkey_initialize() which reduces pkeys_total to 32. So in practice
    the kernel ignores the fact that the hypervisor reserved one key for
    itself (the device tree advertises 31 keys in my test VM).
    
    This is wrong, but the effect in practice is that when a process tries to
    allocate the 32nd key, it gets an -EINVAL error instead of -ENOSPC which
    would indicate that there aren't any keys available
    
    Fixes: cf43d3b2 ("powerpc: Enable pkey subsystem")
    Cc: stable@vger.kernel.org # v4.16+
    Signed-off-by: default avatarThiago Jung Bauermann <bauerman@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    c716a25b
pkeys.c 10.3 KB