/linux-6.6.21/kernel/ |
D | rseq.c | 152 static int rseq_get_rseq_cs(struct task_struct *t, struct rseq_cs *rseq_cs) in rseq_get_rseq_cs() argument 154 struct rseq_cs __user *urseq_cs; in rseq_get_rseq_cs() 161 if (get_user(ptr, &t->rseq->rseq_cs)) in rseq_get_rseq_cs() 164 if (copy_from_user(&ptr, &t->rseq->rseq_cs, sizeof(ptr))) in rseq_get_rseq_cs() 168 memset(rseq_cs, 0, sizeof(*rseq_cs)); in rseq_get_rseq_cs() 173 urseq_cs = (struct rseq_cs __user *)(unsigned long)ptr; in rseq_get_rseq_cs() 174 if (copy_from_user(rseq_cs, urseq_cs, sizeof(*rseq_cs))) in rseq_get_rseq_cs() 177 if (rseq_cs->start_ip >= TASK_SIZE || in rseq_get_rseq_cs() 178 rseq_cs->start_ip + rseq_cs->post_commit_offset >= TASK_SIZE || in rseq_get_rseq_cs() 179 rseq_cs->abort_ip >= TASK_SIZE || in rseq_get_rseq_cs() [all …]
|
/linux-6.6.21/tools/testing/selftests/rseq/ |
D | rseq-riscv-bits.h | 19 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 34 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 73 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 91 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 127 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 141 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 176 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 194 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 240 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 252 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-mips-bits.h | 26 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 47 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 87 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 111 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 150 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 168 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 205 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 231 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 284 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 311 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-s390-bits.h | 21 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 40 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 89 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 113 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 157 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 173 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 214 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 238 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 298 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 320 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-arm-bits.h | 26 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 49 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 94 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 120 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 164 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 182 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 222 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 252 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 311 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 340 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-arm64-bits.h | 26 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 41 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 84 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 102 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 143 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 157 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 195 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 213 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 268 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 289 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-ppc-bits.h | 27 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 47 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 92 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 118 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 162 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 181 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 222 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 247 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 306 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) in RSEQ_TEMPLATE_IDENTIFIER() 333 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|
D | rseq-ppc.h | 66 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 73 "std %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 126 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 130 RSEQ_STORE_INT(rseq_cs) "%%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
|
D | rseq-x86.h | 88 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 91 "movq %%rax, " __rseq_str(rseq_cs) "\n\t" \ 175 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 177 "movl $" __rseq_str(cs_label) ", " __rseq_str(rseq_cs) "\n\t" \
|
D | rseq-arm.h | 111 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 114 "str r0, %[" __rseq_str(rseq_cs) "]\n\t" \
|
D | rseq-s390.h | 107 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 110 LONG_S " %%r0, %[" __rseq_str(rseq_cs) "]\n\t" \
|
D | rseq-mips.h | 115 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 118 LONG_S " $4, %[" __rseq_str(rseq_cs) "]\n\t" \
|
D | rseq-riscv.h | 83 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 86 REG_S RSEQ_ASM_TMP_REG_1 ", %[" __rseq_str(rseq_cs) "]\n" \
|
D | rseq-arm64.h | 125 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ argument 130 " str " RSEQ_ASM_TMP_REG ", %[" __rseq_str(rseq_cs) "]\n" \
|
D | rseq-abi.h | 128 } rseq_cs; member
|
D | rseq.h | 220 RSEQ_WRITE_ONCE(rseq_get_abi()->rseq_cs.arch.ptr, 0); in rseq_clear_rseq_cs()
|
/linux-6.6.21/include/uapi/linux/ |
D | rseq.h | 45 struct rseq_cs { struct 112 __u64 rseq_cs; member
|