diff options
Diffstat (limited to 'results/scraper/fex/809')
| -rw-r--r-- | results/scraper/fex/809 | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/results/scraper/fex/809 b/results/scraper/fex/809 new file mode 100644 index 000000000..2c5ecfb02 --- /dev/null +++ b/results/scraper/fex/809 @@ -0,0 +1,29 @@ +Support mixture of guest and host robust futexes +We can't safely modify the guest's robust list + - Memory might not be sufficient, or it will just overwrite our additions on change +We also can't safely consume the full guest robust and append it to our own + - We don't have a full view of glibc's robust list + - Might work if we capture all HOST get/set lists and modifying it? Needs seccomp filters then. + - Would require us to track our own list, append the glibc head to our tail, and append the guest one to that tail as well. + - Same problem where host glibc could potentially overwrite the and end that contains the guest. + - Can't guarantee no host robust-futex usage due to thunks. + We have no interface in to setting 32bit robust list + - Needs the syscall32 API + +Proposal to the kernel? +- New robust list indexing API? +- Something that uses the key api? +- long set_robust_list_key(key_t key, struct robust_list_head *head, size_t len, int listflg); + - IPC_CREAT - Create a new robust list associated with key + - IPC_EXCL - same to ensure the syscall fails if already created +- long get_robust_list_key(key_t key, int pid, struct robust_list_head **head_ptr, + size_t *len_ptr); +- long del_robust_list_key(key_t key); + - Disassociates robust list of key from process and deletes? + +Allows us to create multiple robust lists tied to a pid. +Still have the regular get/set robust list path, just additional list arrays on top of that. +Expectation is to only have a handful of robust lists, can be a linear scan lookup. +Expose the 32bit path through the "regular" 32bit syscall path. + +I'm already dreading bringing this up on the mailing list. \ No newline at end of file |