/linux-6.6.21/arch/powerpc/include/asm/ |
D | pkeys.h | 33 static inline u64 pkey_to_vmflag_bits(u16 pkey) in pkey_to_vmflag_bits() argument 35 return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); in pkey_to_vmflag_bits() 50 #define pkey_alloc_mask(pkey) (0x1 << pkey) argument 54 #define __mm_pkey_allocated(mm, pkey) { \ argument 55 mm_pkey_allocation_map(mm) |= pkey_alloc_mask(pkey); \ 58 #define __mm_pkey_free(mm, pkey) { \ argument 59 mm_pkey_allocation_map(mm) &= ~pkey_alloc_mask(pkey); \ 62 #define __mm_pkey_is_allocated(mm, pkey) \ argument 63 (mm_pkey_allocation_map(mm) & pkey_alloc_mask(pkey)) 65 #define __mm_pkey_is_reserved(pkey) (reserved_allocation_mask & \ argument [all …]
|
D | mman.h | 18 unsigned long pkey) in arch_calc_vm_prot_bits() argument 21 return (((prot & PROT_SAO) ? VM_SAO : 0) | pkey_to_vmflag_bits(pkey)); in arch_calc_vm_prot_bits() 26 #define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey) argument
|
/linux-6.6.21/crypto/asymmetric_keys/ |
D | public_key.c | 67 software_key_determine_akcipher(const struct public_key *pkey, in software_key_determine_akcipher() argument 79 if (strcmp(pkey->pkey_algo, "rsa") == 0) { in software_key_determine_akcipher() 89 pkey->pkey_algo); in software_key_determine_akcipher() 93 pkey->pkey_algo, hash_algo); in software_key_determine_akcipher() 106 } else if (strncmp(pkey->pkey_algo, "ecdsa", 5) == 0) { in software_key_determine_akcipher() 124 } else if (strcmp(pkey->pkey_algo, "sm2") == 0) { in software_key_determine_akcipher() 131 } else if (strcmp(pkey->pkey_algo, "ecrdsa") == 0) { in software_key_determine_akcipher() 143 if (strscpy(alg_name, pkey->pkey_algo, CRYPTO_MAX_ALG_NAME) < 0) in software_key_determine_akcipher() 161 struct public_key *pkey = params->key->payload.data[asym_crypto]; in software_key_query() local 168 ret = software_key_determine_akcipher(pkey, params->encoding, in software_key_query() [all …]
|
D | restrict.c | 131 const struct public_key *pkey; in restrict_link_by_ca() local 136 pkey = payload->data[asym_crypto]; in restrict_link_by_ca() 137 if (!pkey) in restrict_link_by_ca() 139 if (!test_bit(KEY_EFLAG_CA, &pkey->key_eflags)) in restrict_link_by_ca() 141 if (!test_bit(KEY_EFLAG_KEYCERTSIGN, &pkey->key_eflags)) in restrict_link_by_ca() 145 if (test_bit(KEY_EFLAG_DIGITALSIG, &pkey->key_eflags)) in restrict_link_by_ca() 172 const struct public_key *pkey; in restrict_link_by_digsig() local 177 pkey = payload->data[asym_crypto]; in restrict_link_by_digsig() 179 if (!pkey) in restrict_link_by_digsig() 182 if (!test_bit(KEY_EFLAG_DIGITALSIG, &pkey->key_eflags)) in restrict_link_by_digsig() [all …]
|
/linux-6.6.21/security/selinux/ |
D | ibpkey.c | 55 static unsigned int sel_ib_pkey_hashfn(u16 pkey) in sel_ib_pkey_hashfn() argument 57 return (pkey & (SEL_PKEY_HASH_SIZE - 1)); in sel_ib_pkey_hashfn() 73 struct sel_ib_pkey *pkey; in sel_ib_pkey_find() local 76 list_for_each_entry_rcu(pkey, &sel_ib_pkey_hash[idx].list, list) { in sel_ib_pkey_find() 77 if (pkey->psec.pkey == pkey_num && in sel_ib_pkey_find() 78 pkey->psec.subnet_prefix == subnet_prefix) in sel_ib_pkey_find() 79 return pkey; in sel_ib_pkey_find() 93 static void sel_ib_pkey_insert(struct sel_ib_pkey *pkey) in sel_ib_pkey_insert() argument 100 idx = sel_ib_pkey_hashfn(pkey->psec.pkey); in sel_ib_pkey_insert() 101 list_add_rcu(&pkey->list, &sel_ib_pkey_hash[idx].list); in sel_ib_pkey_insert() [all …]
|
/linux-6.6.21/tools/testing/selftests/mm/ |
D | protection_keys.c | 178 static u32 hw_pkey_get(int pkey, unsigned long flags) in hw_pkey_get() argument 183 __func__, pkey, flags, 0, 0); in hw_pkey_get() 186 return (u32) get_pkey_bits(pkey_reg, pkey); in hw_pkey_get() 189 static int hw_pkey_set(int pkey, unsigned long rights, unsigned long flags) in hw_pkey_set() argument 199 new_pkey_reg = set_pkey_bits(old_pkey_reg, pkey, rights); in hw_pkey_set() 205 __func__, pkey, rights, flags, 0, __read_pkey_reg(), in hw_pkey_set() 210 void pkey_disable_set(int pkey, int flags) in pkey_disable_set() argument 218 pkey, flags); in pkey_disable_set() 221 pkey_rights = hw_pkey_get(pkey, syscall_flags); in pkey_disable_set() 224 pkey, pkey, pkey_rights); in pkey_disable_set() [all …]
|
D | pkey-powerpc.h | 34 static inline u32 pkey_bit_position(int pkey) in pkey_bit_position() argument 36 return (NR_PKEYS - pkey - 1) * PKEY_BITS_PER_PKEY; in pkey_bit_position() 91 void expect_fault_on_read_execonly_key(void *p1, int pkey) in expect_fault_on_read_execonly_key() argument 105 void *malloc_pkey_with_mprotect_subpage(long size, int prot, u16 pkey) in malloc_pkey_with_mprotect_subpage() argument 111 size, prot, pkey); in malloc_pkey_with_mprotect_subpage() 112 pkey_assert(pkey < NR_PKEYS); in malloc_pkey_with_mprotect_subpage() 122 ret = mprotect_pkey((void *)ptr, PAGE_SIZE, prot, pkey); in malloc_pkey_with_mprotect_subpage() 126 dprintf1("%s() for pkey %d @ %p\n", __func__, pkey, ptr); in malloc_pkey_with_mprotect_subpage()
|
D | pkey-helpers.h | 83 void expected_pkey_fault(int pkey); 85 int sys_pkey_free(unsigned long pkey); 87 unsigned long pkey); 100 static inline u64 set_pkey_bits(u64 reg, int pkey, u64 flags) in set_pkey_bits() argument 102 u32 shift = pkey_bit_position(pkey); in set_pkey_bits() 110 static inline u64 get_pkey_bits(u64 reg, int pkey) in get_pkey_bits() argument 112 u32 shift = pkey_bit_position(pkey); in get_pkey_bits() 152 static inline void __pkey_access_allow(int pkey, int do_allow) in __pkey_access_allow() argument 155 int bit = pkey * 2; in __pkey_access_allow() 166 static inline void __pkey_write_allow(int pkey, int do_allow_write) in __pkey_write_allow() argument [all …]
|
D | pkey-x86.h | 101 static inline u32 pkey_bit_position(int pkey) in pkey_bit_position() argument 103 return pkey * PKEY_BITS_PER_PKEY; in pkey_bit_position() 145 void expect_fault_on_read_execonly_key(void *p1, int pkey) in expect_fault_on_read_execonly_key() argument 151 expected_pkey_fault(pkey); in expect_fault_on_read_execonly_key() 154 void *malloc_pkey_with_mprotect_subpage(long size, int prot, u16 pkey) in malloc_pkey_with_mprotect_subpage() argument
|
/linux-6.6.21/arch/x86/include/asm/ |
D | pkeys.h | 12 extern int arch_set_user_pkey_access(struct task_struct *tsk, int pkey, 34 int prot, int pkey); 36 int prot, int pkey) in arch_override_mprotect_pkey() argument 41 return __arch_override_mprotect_pkey(vma, prot, pkey); in arch_override_mprotect_pkey() 47 #define mm_set_pkey_allocated(mm, pkey) do { \ argument 48 mm_pkey_allocation_map(mm) |= (1U << pkey); \ 50 #define mm_set_pkey_free(mm, pkey) do { \ argument 51 mm_pkey_allocation_map(mm) &= ~(1U << pkey); \ 55 bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey) in mm_pkey_is_allocated() argument 62 if (pkey < 0) in mm_pkey_is_allocated() [all …]
|
D | pkru.h | 19 static inline bool __pkru_allows_read(u32 pkru, u16 pkey) in __pkru_allows_read() argument 21 int pkru_pkey_bits = pkey * PKRU_BITS_PER_PKEY; in __pkru_allows_read() 25 static inline bool __pkru_allows_write(u32 pkru, u16 pkey) in __pkru_allows_write() argument 27 int pkru_pkey_bits = pkey * PKRU_BITS_PER_PKEY; in __pkru_allows_write()
|
/linux-6.6.21/drivers/infiniband/core/ |
D | security.c | 48 struct pkey_index_qp_list *pkey = NULL; in get_pkey_idx_qp_list() local 56 pkey = tmp_pkey; in get_pkey_idx_qp_list() 61 return pkey; in get_pkey_idx_qp_list() 65 u16 *pkey, in get_pkey_and_subnet_prefix() argument 71 ret = ib_get_cached_pkey(dev, pp->port_num, pp->pkey_index, pkey); in get_pkey_and_subnet_prefix() 80 static int enforce_qp_pkey_security(u16 pkey, in enforce_qp_pkey_security() argument 87 ret = security_ib_pkey_access(qp_sec->security, subnet_prefix, pkey); in enforce_qp_pkey_security() 96 pkey); in enforce_qp_pkey_security() 115 u16 pkey; in check_qp_port_pkey_settings() local 123 &pkey, in check_qp_port_pkey_settings() [all …]
|
/linux-6.6.21/tools/testing/selftests/powerpc/mm/ |
D | pkey_exec_prot.c | 106 int pkey, ret, i; in test() local 155 pkey = sys_pkey_alloc(0, rights); in test() 156 FAIL_IF(pkey < 0); in test() 179 FAIL_IF(sys_pkey_mprotect(insns, pgsize, PROT_EXEC, pkey) != 0); in test() 196 FAIL_IF(sys_pkey_mprotect(insns, pgsize, PROT_EXEC, pkey) != 0); in test() 205 fault_pkey = pkey; in test() 216 FAIL_IF(sys_pkey_mprotect(insns, pgsize, PROT_EXEC, pkey) != 0); in test() 217 pkey_set_rights(pkey, rights); in test() 233 FAIL_IF(sys_pkey_mprotect(insns, pgsize, PROT_EXEC, pkey) != 0); in test() 234 pkey_set_rights(pkey, rights); in test() [all …]
|
/linux-6.6.21/arch/powerpc/mm/book3s64/ |
D | pkeys.c | 49 #define pkeyshift(pkey) (PKEY_REG_BITS - ((pkey+1) * AMR_BITS_PER_PKEY)) argument 314 static inline void init_amr(int pkey, u8 init_bits) in init_amr() argument 316 u64 new_amr_bits = (((u64)init_bits & 0x3UL) << pkeyshift(pkey)); in init_amr() 317 u64 old_amr = current_thread_amr() & ~((u64)(0x3ul) << pkeyshift(pkey)); in init_amr() 322 static inline void init_iamr(int pkey, u8 init_bits) in init_iamr() argument 324 u64 new_iamr_bits = (((u64)init_bits & 0x1UL) << pkeyshift(pkey)); in init_iamr() 325 u64 old_iamr = current_thread_iamr() & ~((u64)(0x1ul) << pkeyshift(pkey)); in init_iamr() 337 int __arch_set_user_pkey_access(struct task_struct *tsk, int pkey, in __arch_set_user_pkey_access() argument 347 pkey_bits = 0x3ul << pkeyshift(pkey); in __arch_set_user_pkey_access() 361 init_iamr(pkey, new_iamr_bits); in __arch_set_user_pkey_access() [all …]
|
/linux-6.6.21/tools/testing/selftests/powerpc/include/ |
D | pkeys.h | 52 void pkey_set_rights(int pkey, unsigned long rights) in pkey_set_rights() argument 56 shift = (NR_PKEYS - pkey - 1) * PKEY_BITS_PER_PKEY; in pkey_set_rights() 63 int sys_pkey_mprotect(void *addr, size_t len, int prot, int pkey) in sys_pkey_mprotect() argument 65 return syscall(__NR_pkey_mprotect, addr, len, prot, pkey); in sys_pkey_mprotect() 73 int sys_pkey_free(int pkey) in sys_pkey_free() argument 75 return syscall(__NR_pkey_free, pkey); in sys_pkey_free() 81 int pkey; in pkeys_unsupported() local 88 pkey = sys_pkey_alloc(0, 0); in pkeys_unsupported() 89 SKIP_IF(pkey < 0); in pkeys_unsupported() 90 sys_pkey_free(pkey); in pkeys_unsupported()
|
/linux-6.6.21/Documentation/translations/zh_CN/core-api/ |
D | protection-keys.rst | 46 int pkey_free(int pkey); 48 unsigned long prot, int pkey); 50 在使用一个pkey之前,必须先用pkey_alloc()分配它。一个应用程序直接调用 55 pkey = pkey_alloc(0, PKEY_DISABLE_WRITE); 57 ret = pkey_mprotect(ptr, PAGE_SIZE, real_prot, pkey); 63 pkey_set(pkey, 0); // clear PKEY_DISABLE_WRITE 65 pkey_set(pkey, PKEY_DISABLE_WRITE); // set PKEY_DISABLE_WRITE again 67 现在,当它释放内存时,它也将释放pkey,因为它不再被使用了:: 70 pkey_free(pkey); 85 pkey = pkey_alloc(0, PKEY_DISABLE_WRITE | PKEY_DISABLE_READ); [all …]
|
/linux-6.6.21/drivers/infiniband/ulp/ipoib/ |
D | ipoib_vlan.c | 73 if (ppriv->pkey == priv->pkey) in is_child_unique() 77 if (tpriv->pkey == priv->pkey && in is_child_unique() 95 u16 pkey, int type) in __ipoib_vlan_add() argument 115 if (pkey == 0 || pkey == 0x8000) { in __ipoib_vlan_add() 123 priv->pkey = pkey; in __ipoib_vlan_add() 167 int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) in ipoib_vlan_add() argument 188 ppriv->dev->name, pkey); in ipoib_vlan_add() 199 result = __ipoib_vlan_add(ppriv, priv, pkey, IPOIB_LEGACY_CHILD); in ipoib_vlan_add() 247 int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) in ipoib_vlan_delete() argument 267 if (priv->pkey == pkey && in ipoib_vlan_delete()
|
/linux-6.6.21/arch/x86/mm/ |
D | pkeys.c | 76 int __arch_override_mprotect_pkey(struct vm_area_struct *vma, int prot, int pkey) in __arch_override_mprotect_pkey() argument 82 if (pkey != -1) in __arch_override_mprotect_pkey() 83 return pkey; in __arch_override_mprotect_pkey() 92 pkey = execute_only_pkey(vma->vm_mm); in __arch_override_mprotect_pkey() 93 if (pkey > 0) in __arch_override_mprotect_pkey() 94 return pkey; in __arch_override_mprotect_pkey() 113 #define PKRU_AD_MASK(pkey) (PKRU_AD_BIT << ((pkey) * PKRU_BITS_PER_PKEY)) argument
|
/linux-6.6.21/include/net/ |
D | neighbour.h | 205 __u32 (*hash)(const void *pkey, 208 bool (*key_eq)(const struct neighbour *, const void *pkey); 213 int (*is_multicast)(const void *pkey); 279 static inline bool neigh_key_eq32(const struct neighbour *n, const void *pkey) in neigh_key_eq32() argument 281 return *(const u32 *)n->primary_key == *(const u32 *)pkey; in neigh_key_eq32() 284 static inline bool neigh_key_eq128(const struct neighbour *n, const void *pkey) in neigh_key_eq128() argument 287 const u32 *p32 = pkey; in neigh_key_eq128() 295 bool (*key_eq)(const struct neighbour *n, const void *pkey), in ___neigh_lookup_noref() argument 296 __u32 (*hash)(const void *pkey, in ___neigh_lookup_noref() argument 299 const void *pkey, in ___neigh_lookup_noref() [all …]
|
D | ndisc.h | 371 static inline u32 ndisc_hashfn(const void *pkey, const struct net_device *dev, __u32 *hash_rnd) in ndisc_hashfn() argument 373 const u32 *p32 = pkey; in ndisc_hashfn() 381 static inline struct neighbour *__ipv6_neigh_lookup_noref(struct net_device *dev, const void *pkey) in __ipv6_neigh_lookup_noref() argument 383 return ___neigh_lookup_noref(&nd_tbl, neigh_key_eq128, ndisc_hashfn, pkey, dev); in __ipv6_neigh_lookup_noref() 388 const void *pkey) in __ipv6_neigh_lookup_noref_stub() argument 391 ndisc_hashfn, pkey, dev); in __ipv6_neigh_lookup_noref_stub() 394 static inline struct neighbour *__ipv6_neigh_lookup(struct net_device *dev, const void *pkey) in __ipv6_neigh_lookup() argument 399 n = __ipv6_neigh_lookup_noref(dev, pkey); in __ipv6_neigh_lookup() 408 const void *pkey) in __ipv6_confirm_neigh() argument 413 n = __ipv6_neigh_lookup_noref(dev, pkey); in __ipv6_confirm_neigh() [all …]
|
/linux-6.6.21/include/linux/ |
D | pkeys.h | 14 #define arch_override_mprotect_pkey(vma, prot, pkey) (0) argument 23 static inline bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey) in mm_pkey_is_allocated() argument 25 return (pkey == 0); in mm_pkey_is_allocated() 33 static inline int mm_pkey_free(struct mm_struct *mm, int pkey) in mm_pkey_free() argument 38 static inline int arch_set_user_pkey_access(struct task_struct *tsk, int pkey, in arch_set_user_pkey_access() argument
|
/linux-6.6.21/drivers/infiniband/hw/hfi1/ |
D | ud.c | 70 u16 pkey; in ud_loopback() local 74 pkey = hfi1_get_pkey(ibp, sqp->s_pkey_index); in ud_loopback() 77 if (unlikely(ingress_pkey_check(ppd, pkey, sc5, in ud_loopback() 80 hfi1_bad_pkey(ibp, pkey, in ud_loopback() 226 u16 *pkey, u32 extra_bytes, bool bypass) in hfi1_make_bth_deth() argument 243 *pkey = hfi1_get_pkey(ibp, rvt_get_swqe_pkey_index(wqe)); in hfi1_make_bth_deth() 245 *pkey = hfi1_get_pkey(ibp, qp->s_pkey_index); in hfi1_make_bth_deth() 247 bth0 |= *pkey; in hfi1_make_bth_deth() 265 u16 len, slid, dlid, pkey; in hfi1_make_ud_req_9B() local 323 hfi1_make_bth_deth(qp, wqe, ohdr, &pkey, extra_bytes, false); in hfi1_make_ud_req_9B() [all …]
|
/linux-6.6.21/Documentation/core-api/ |
D | protection-keys.rst | 37 int pkey_free(int pkey); 39 unsigned long prot, int pkey); 41 Before a pkey can be used, it must first be allocated with 49 pkey = pkey_alloc(0, PKEY_DISABLE_WRITE); 51 ret = pkey_mprotect(ptr, PAGE_SIZE, real_prot, pkey); 57 pkey_set(pkey, 0); // clear PKEY_DISABLE_WRITE 59 pkey_set(pkey, PKEY_DISABLE_WRITE); // set PKEY_DISABLE_WRITE again 61 Now when it frees the memory, it will also free the pkey since it 65 pkey_free(pkey); 82 pkey = pkey_alloc(0, PKEY_DISABLE_WRITE | PKEY_DISABLE_READ); [all …]
|
/linux-6.6.21/crypto/ |
D | rsa.c | 96 const struct rsa_mpi_key *pkey = rsa_get_key(tfm); in rsa_enc() local 104 if (unlikely(!pkey->n || !pkey->e)) { in rsa_enc() 114 ret = _rsa_enc(pkey, c, m); in rsa_enc() 135 const struct rsa_mpi_key *pkey = rsa_get_key(tfm); in rsa_dec() local 143 if (unlikely(!pkey->n || !pkey->d)) { in rsa_dec() 153 ret = _rsa_dec_crt(pkey, m, c); in rsa_dec() 340 struct rsa_mpi_key *pkey = akcipher_tfm_ctx(tfm); in rsa_max_size() local 342 return mpi_get_size(pkey->n); in rsa_max_size() 347 struct rsa_mpi_key *pkey = akcipher_tfm_ctx(tfm); in rsa_exit_tfm() local 349 rsa_free_mpi_key(pkey); in rsa_exit_tfm()
|
/linux-6.6.21/lib/ |
D | digsig.c | 78 MPI in = NULL, res = NULL, pkey[2]; in digsig_verify_rsa() local 112 pkey[i] = mpi_read_from_buffer(datap, &remaining); in digsig_verify_rsa() 113 if (IS_ERR(pkey[i])) { in digsig_verify_rsa() 114 err = PTR_ERR(pkey[i]); in digsig_verify_rsa() 120 mblen = mpi_get_nbits(pkey[0]); in digsig_verify_rsa() 145 err = mpi_powm(res, in, pkey[1], pkey[0]); in digsig_verify_rsa() 177 mpi_free(pkey[i]); in digsig_verify_rsa()
|