mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-25 11:04:35 +00:00
Add a transition test to verify that CRIU correctly avoids active rseq critical sections when selecting an address for parasite code injection and execution during checkpointing. If CRIU were to inject parasite blobs or execute parasite syscalls inside an active restartable sequence critical section, kernel preemption hooks (`rseq_handle_notify_resume`) would trigger sequence aborts or fixups, clobbering userspace memory or breaking parasite execution. - Emulates a spinning worker loop (`while (futex_get(f) == 0)`) inside an active rseq critical section so the thread is consistently inside `[start_ip, start_ip + post_commit_offset)` when CRIU initiates checkpointing. - Dynamically sets and clears `__rseq_abi.rseq_cs` inside the assembly block (`start_ip`), adhering to the rseq protocol where critical section descriptors must only be active during critical section execution. - Configures `abort_ip` to return (`ret`) out of the assembly function back to `test_waitsig_rseq()`, where a wrapper loop re-invokes the function if C/R is still in progress or an interruption occurs. Signed-off-by: Andrei Vagin <avagin@google.com> Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@futurfusion.io> |
||
|---|---|---|
| .. | ||
| compel | ||
| cuda-checkpoint | ||
| exhaustive | ||
| inhfd | ||
| javaTests | ||
| jenkins | ||
| libfault | ||
| others | ||
| pki | ||
| plugins | ||
| zdtm | ||
| .gitignore | ||
| abrt.sh | ||
| crit-recode.py | ||
| empty-netns-prep.sh | ||
| groups.desc | ||
| inhfd.desc | ||
| Makefile | ||
| pycriu | ||
| umount2.c | ||
| zdtm.desc | ||
| zdtm.py | ||
| zdtm_ct.c | ||
| zdtm_mount_cgroups | ||
| zdtm_umount_cgroups | ||