mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
linux-user/syscall.c: Don't warn about unimplemented get_robust_list
The nature of the kernel ABI for the get_robust_list and set_robust_list syscalls means we cannot implement them in QEMU. Make get_robust_list silently return ENOSYS rather than using the default "print message and then fail ENOSYS" code path, in the same way we already do for set_robust_list, and add a comment documenting why we do this. This silences warnings which were being produced for emulating even trivial programs like 'ls' in x86-64-on-x86-64. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
a94b4987e2
commit
e9a970a831
1 changed files with 14 additions and 1 deletions
|
@ -8631,7 +8631,20 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|||
|
||||
#ifdef TARGET_NR_set_robust_list
|
||||
case TARGET_NR_set_robust_list:
|
||||
goto unimplemented_nowarn;
|
||||
case TARGET_NR_get_robust_list:
|
||||
/* The ABI for supporting robust futexes has userspace pass
|
||||
* the kernel a pointer to a linked list which is updated by
|
||||
* userspace after the syscall; the list is walked by the kernel
|
||||
* when the thread exits. Since the linked list in QEMU guest
|
||||
* memory isn't a valid linked list for the host and we have
|
||||
* no way to reliably intercept the thread-death event, we can't
|
||||
* support these. Silently return ENOSYS so that guest userspace
|
||||
* falls back to a non-robust futex implementation (which should
|
||||
* be OK except in the corner case of the guest crashing while
|
||||
* holding a mutex that is shared with another process via
|
||||
* shared memory).
|
||||
*/
|
||||
goto unimplemented_nowarn;
|
||||
#endif
|
||||
|
||||
#if defined(TARGET_NR_utimensat) && defined(__NR_utimensat)
|
||||
|
|
Loading…
Reference in a new issue