/Linux-v4.19/kernel/ |
D | rseq.c | 115 static int rseq_get_rseq_cs(struct task_struct *t, struct rseq_cs *rseq_cs) in rseq_get_rseq_cs() argument 117 struct rseq_cs __user *urseq_cs; in rseq_get_rseq_cs() 123 if (copy_from_user(&ptr, &t->rseq->rseq_cs.ptr64, sizeof(ptr))) in rseq_get_rseq_cs() 126 memset(rseq_cs, 0, sizeof(*rseq_cs)); in rseq_get_rseq_cs() 131 urseq_cs = (struct rseq_cs __user *)(unsigned long)ptr; in rseq_get_rseq_cs() 132 if (copy_from_user(rseq_cs, urseq_cs, sizeof(*rseq_cs))) in rseq_get_rseq_cs() 135 if (rseq_cs->start_ip >= TASK_SIZE || in rseq_get_rseq_cs() 136 rseq_cs->start_ip + rseq_cs->post_commit_offset >= TASK_SIZE || in rseq_get_rseq_cs() 137 rseq_cs->abort_ip >= TASK_SIZE || in rseq_get_rseq_cs() 138 rseq_cs->version > 0) in rseq_get_rseq_cs() [all …]
|
/Linux-v4.19/tools/testing/selftests/rseq/ |
D | rseq-x86.h | 51 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 54 "movq %%rax, %[" __rseq_str(rseq_cs) "]\n\t" \ 87 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_storev() 106 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 144 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpnev_storeoffp_load() 168 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 203 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_addv() 217 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 248 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_trystorev_storev() 270 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-arm.h | 45 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 48 "str r0, %[" __rseq_str(rseq_cs) "]\n\t" \ 91 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_storev() 114 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 153 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpnev_storeoffp_load() 179 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 219 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_addv() 237 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 271 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_trystorev_storev() 297 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-ppc.h | 56 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 63 "std %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 83 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 87 "stw %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 173 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_storev() 193 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 228 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpnev_storeoffp_load() 254 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 290 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_addv() 309 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() [all …]
|
D | rseq-s390.h | 72 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 75 LONG_S " %%r0, %[" __rseq_str(rseq_cs) "]\n\t" \ 106 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_storev() 125 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 164 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpnev_storeoffp_load() 188 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 224 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_addv() 240 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 272 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_trystorev_storev() 294 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-mips.h | 71 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 74 LONG_S " $4, %[" __rseq_str(rseq_cs) "]\n\t" \ 118 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_storev() 139 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 178 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpnev_storeoffp_load() 202 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 242 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_addv() 260 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 294 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_trystorev_storev() 318 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-arm64.h | 98 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 103 " str " RSEQ_ASM_TMP_REG ", %[" __rseq_str(rseq_cs) "]\n" \ 185 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpeqv_storev() 200 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 234 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpnev_storeoffp_load() 252 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 285 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_addv() 299 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 328 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpeqv_trystorev_storev() 345 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq.h | 143 __rseq_abi.rseq_cs.ptr = 0; in rseq_clear_rseq_cs() 145 __rseq_abi.rseq_cs.ptr.ptr32 = 0; in rseq_clear_rseq_cs()
|
/Linux-v4.19/include/uapi/linux/ |
D | rseq.h | 45 struct rseq_cs { struct 124 } rseq_cs; member
|