b1ee5b654d
mostly consists of pushing a few copyin's and copyout's up into __semctl() as all the other callers were already doing the UIO_SYSSPACE case. This also changes kern_semctl() to set the return value in a passed in pointer to a register_t rather than td->td_retval[0] directly so that callers can only set td->td_retval[0] if all the various copyout's succeed. As a result of these changes, kern_semctl() no longer does copyin/copyout (except for GETALL/SETALL) so simplify the locking to acquire the semakptr mutex before the MAC check and hold it all the way until the end of the big switch statement. The GETALL/SETALL cases have to temporarily drop it while they do copyin/malloc and copyout. Also, simplify the SETALL case to remove handling for a non-existent race condition. |
||
---|---|---|
.. | ||
linux_file.c | ||
linux_getcwd.c | ||
linux_ioctl.c | ||
linux_ioctl.h | ||
linux_ipc.c | ||
linux_ipc.h | ||
linux_mib.c | ||
linux_mib.h | ||
linux_misc.c | ||
linux_signal.c | ||
linux_signal.h | ||
linux_socket.c | ||
linux_socket.h | ||
linux_stats.c | ||
linux_sysctl.c | ||
linux_sysproto.h | ||
linux_uid16.c | ||
linux_util.c | ||
linux_util.h |