diff options
author | 2025-03-16 00:19:08 +0800 | |
---|---|---|
committer | 2025-03-20 09:28:44 +0100 | |
commit | 33c9da5dfb18c2ff5a88d01aca2cf253cd0ac3bc (patch) | |
tree | 0ef75011ee477633de8c882d696314eca6fffefb /arch/um/drivers/rtc_user.c | |
parent | um: Prohibit the VM_CLONE flag in run_helper_thread() (diff) | |
download | wireguard-linux-33c9da5dfb18c2ff5a88d01aca2cf253cd0ac3bc.tar.xz wireguard-linux-33c9da5dfb18c2ff5a88d01aca2cf253cd0ac3bc.zip |
um: Rewrite the sigio workaround based on epoll and tgkill
The existing sigio workaround implementation removes FDs from the
poll when events are triggered, requiring users to re-add them via
add_sigio_fd() after processing. This introduces a potential race
condition between FD removal in write_sigio_thread() and next_poll
update in __add_sigio_fd(), and is inefficient due to frequent FD
removal and re-addition. Rewrite the implementation based on epoll
and tgkill for improved efficiency and reliability.
Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
Link: https://patch.msgid.link/20250315161910.4082396-2-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'arch/um/drivers/rtc_user.c')
-rw-r--r-- | arch/um/drivers/rtc_user.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/um/drivers/rtc_user.c b/arch/um/drivers/rtc_user.c index 7c3cec4c68cf..51e79f3148cd 100644 --- a/arch/um/drivers/rtc_user.c +++ b/arch/um/drivers/rtc_user.c @@ -39,7 +39,7 @@ int uml_rtc_start(bool timetravel) } /* apparently timerfd won't send SIGIO, use workaround */ - sigio_broken(uml_rtc_irq_fds[0]); + sigio_broken(); err = add_sigio_fd(uml_rtc_irq_fds[0]); if (err < 0) { close(uml_rtc_irq_fds[0]); |