/Linux-v5.4/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-v5.4/tools/testing/selftests/rseq/ |
D | rseq-arm.h | 115 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 118 "str r0, %[" __rseq_str(rseq_cs) "]\n\t" \ 166 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_storev() 189 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 233 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpnev_storeoffp_load() 259 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 302 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_addv() 320 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 359 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_trystorev_storev() 385 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-ppc.h | 67 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 74 "std %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 124 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 128 "stw %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 219 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_storev() 239 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 279 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpnev_storeoffp_load() 305 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 344 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_addv() 363 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() [all …]
|
D | rseq-arm64.h | 127 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 132 " str " RSEQ_ASM_TMP_REG ", %[" __rseq_str(rseq_cs) "]\n" \ 219 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpeqv_storev() 234 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 273 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpnev_storeoffp_load() 291 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 327 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_addv() 341 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 375 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in rseq_cmpeqv_trystorev_storev() 392 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-mips.h | 121 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 124 LONG_S " $4, %[" __rseq_str(rseq_cs) "]\n\t" \ 173 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_storev() 194 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 238 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpnev_storeoffp_load() 262 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 305 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_addv() 323 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 362 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in rseq_cmpeqv_trystorev_storev() 386 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_trystorev_storev() [all …]
|
D | rseq-s390.h | 111 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 114 LONG_S " %%r0, %[" __rseq_str(rseq_cs) "]\n\t" \ 150 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_storev() 169 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpeqv_storev() 213 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpnev_storeoffp_load() 237 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_cmpnev_storeoffp_load() 276 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_addv() 292 [rseq_cs] "m" (__rseq_abi.rseq_cs), in rseq_addv() 329 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in rseq_cmpeqv_trystorev_storev() 351 [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()
|
D | rseq-x86.h | 85 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 88 "movq %%rax, " __rseq_str(rseq_cs) "\n\t" \ 607 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 609 "movl $" __rseq_str(cs_label) ", " __rseq_str(rseq_cs) "\n\t" \
|
/Linux-v5.4/include/uapi/linux/ |
D | rseq.h | 45 struct rseq_cs { struct 124 } rseq_cs; member
|