qemu/linux-user
Emilio G. Cota 068a5ea02f qom: convert the CPU list to RCU
Iterating over the list without using atomics is undefined behaviour,
since the list can be modified concurrently by other threads (e.g.
every time a new thread is created in user-mode).

Fix it by implementing the CPU list as an RCU QTAILQ. This requires
a little bit of extra work to traverse list in reverse order (see
previous patch), but other than that the conversion is trivial.

Signed-off-by: Emilio G. Cota <cota@braap.org>
Message-Id: <20180819091335.22863-12-cota@braap.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2018-08-23 18:46:25 +02:00
..
aarch64 linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
alpha linux-user: Report error message on stderr, rather than stdout 2018-07-09 00:52:50 +02:00
arm linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
cris linux-user: Report error message on stderr, rather than stdout 2018-07-09 00:52:50 +02:00
generic linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
host linux-user: ppc64: don't use volatile register during safe_syscall 2018-07-31 09:57:43 +02:00
hppa linux-user/hppa: Fix typo in mknodat syscall 2018-06-11 14:45:44 +02:00
i386 linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
m68k linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
microblaze linux-user: Report error message on stderr, rather than stdout 2018-07-09 00:52:50 +02:00
mips linux-user: Update MIPS syscall numbers up to kernel 4.18 headers 2018-08-16 19:18:45 +02:00
mips64 linux-user: Update MIPS syscall numbers up to kernel 4.18 headers 2018-08-16 19:18:45 +02:00
nios2 linux-user: Do not report "syscall not implemented" by default 2018-07-09 00:52:04 +02:00
openrisc linux-user: Fix struct sigaltstack for openrisc 2018-07-03 22:40:33 +09:00
ppc linux-user/ppc: Implement swapcontext syscall 2018-07-22 21:33:45 +02:00
riscv linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
s390x linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
sh4 linux-user: Report error message on stderr, rather than stdout 2018-07-09 00:52:50 +02:00
sparc linux-user: Report error message on stderr, rather than stdout 2018-07-09 00:52:50 +02:00
sparc64 linux-user/sparc64: Add inotify_rm_watch and tee syscalls 2018-06-11 14:47:45 +02:00
tilegx linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
x86_64 linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
xtensa linux-user: move generic signal definitions to generic/signal.h 2018-06-04 01:30:44 +02:00
cpu_loop-common.h linux-user: create a dummy per arch cpu_loop.c 2018-04-30 09:47:55 +02:00
elfload.c linux-user: fix ELF load alignment error 2018-07-22 21:32:50 +02:00
errno_defs.h linux-user: Handle ERFKILL and EHWPOISON 2017-01-22 18:14:10 -08:00
exit.c linux-user: add gcov support to preexit_cleanup 2018-07-05 15:59:41 +01:00
flat.h Support for 32 bit ABI on 64 bit targets (only enabled Sparc64) 2007-10-14 16:27:31 +00:00
flatload.c linux-user: Use is_error() to avoid warnings and make the code clearer 2018-06-11 14:40:11 +02:00
ioctls.h linux-user: Implement ioctl cmd TIOCGPTPEER 2018-02-18 18:52:32 +01:00
linux_loop.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
linuxload.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
m68k-sim.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
main.c qom: convert the CPU list to RCU 2018-08-23 18:46:25 +02:00
Makefile.objs linux-user: introduce preexit_cleanup 2018-07-05 15:59:41 +01:00
mmap.c linux-user/mmap.c: handle invalid len maps correctly 2018-07-31 09:57:25 +02:00
qemu.h linux-user/ppc: Implement swapcontext syscall 2018-07-22 21:33:45 +02:00
safe-syscall.S linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
signal-common.h linux-user: introduce target_sigsp() and target_save_altstack() 2018-05-03 18:29:15 +02:00
signal.c linux-user: Implement signals for openrisc 2018-07-03 22:40:33 +09:00
socket.h linux-user: update ARCH_HAS_SOCKET_TYPES use 2018-05-25 10:10:55 +02:00
strace.c linux-user: Add preprocessor availability control to some syscalls 2018-08-16 19:18:45 +02:00
strace.list linux-user/strace: Improve recvmsg() output 2018-07-03 16:27:15 +02:00
syscall_defs.h linux-user: remove useless #if 2018-06-04 01:30:44 +02:00
syscall_types.h linux-user: Add FICLONE and FICLONERANGE ioctls 2017-02-16 15:29:30 +01:00
syscall.c qom: convert the CPU list to RCU 2018-08-23 18:46:25 +02:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
uaccess.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
uname.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vm86.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00