mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

In future we intend to change the vm_flags_t type, so it isn't correct for architecture and driver code to assume it is unsigned long. Correct this assumption across the board. Overall, this patch does not introduce any functional change. Link: https://lkml.kernel.org/r/b6eb1894abc5555ece80bb08af5c022ef780c8bc.1750274467.git.lorenzo.stoakes@oracle.com Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: Christian Brauner <brauner@kernel.org> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Reviewed-by: Oscar Salvador <osalvador@suse.de> Reviewed-by: Pedro Falcato <pfalcato@suse.de> Acked-by: Catalin Marinas <catalin.marinas@arm.com> [arm64] Acked-by: Zi Yan <ziy@nvidia.com> Acked-by: David Hildenbrand <david@redhat.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Jann Horn <jannh@google.com> Cc: Kees Cook <kees@kernel.org> Cc: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
*/
|
|
#ifndef _ASM_POWERPC_MMAN_H
|
|
#define _ASM_POWERPC_MMAN_H
|
|
|
|
#include <uapi/asm/mman.h>
|
|
|
|
#if defined(CONFIG_PPC64) && !defined(BUILD_VDSO)
|
|
|
|
#include <asm/cputable.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/pkeys.h>
|
|
#include <asm/cpu_has_feature.h>
|
|
#include <asm/firmware.h>
|
|
|
|
static inline vm_flags_t arch_calc_vm_prot_bits(unsigned long prot,
|
|
unsigned long pkey)
|
|
{
|
|
#ifdef CONFIG_PPC_MEM_KEYS
|
|
return (((prot & PROT_SAO) ? VM_SAO : 0) | pkey_to_vmflag_bits(pkey));
|
|
#else
|
|
return ((prot & PROT_SAO) ? VM_SAO : 0);
|
|
#endif
|
|
}
|
|
#define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey)
|
|
|
|
static inline bool arch_validate_prot(unsigned long prot, unsigned long addr)
|
|
{
|
|
if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM | PROT_SAO))
|
|
return false;
|
|
if (prot & PROT_SAO) {
|
|
if (!cpu_has_feature(CPU_FTR_SAO))
|
|
return false;
|
|
if (firmware_has_feature(FW_FEATURE_LPAR) &&
|
|
!IS_ENABLED(CONFIG_PPC_PROT_SAO_LPAR))
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
#define arch_validate_prot arch_validate_prot
|
|
|
|
#endif /* CONFIG_PPC64 */
|
|
#endif /* _ASM_POWERPC_MMAN_H */
|