set_robust_list - Sets head for the list of robust futexes for the current thread
set_robust_list syscall sets the head for the list of robust futexes for the current thread. This list is created when a robust futex is allocated. The
set_robust_list syscall can be used to create, modify and/or remove the list. It takes two arguments, head and len. The head is a pointer to the list of robust futexes and the len is the size of the list in bytes.
set_robust_list syscall is used to guard against data races in user-space software. If the robust futex is detected to be in use by another thread, it means that a data race is occurring and the current thread can take steps to avoid the race condition.
struct robust_list_head*[U] - Pointer to the head of the list of robust futexes.
size_t[U] - Size of the list in bytes.
- K - Originated from kernel-space.
- U - Originated from user space (for example, pointer to user space memory used to get it)
- TOCTOU - Vulnerable to TOCTOU (time of check, time of use)
- OPT - Optional argument - might not always be available (passed with null value)
Hooking on sys_set_robust_list is useful for tracking when the list of robust futexes is modified or created.
Example Use Case¶
One example of
set_robust_list being used is in thread synchronization mechanisms. In this case, a thread can call the
set_robust_list syscall in order to create or modify a list of robust futexes in order to guard against data races.
set_robust_list syscall is vulnerable to TOCTOU (time of check, time of use) attacks and in some cases it may be necessary to take extra precautions to secure this system call.
get_robust_list syscall can be used to get the current list of robust futexes from a thread and is related to the
This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.