[PATCH 4/9] um: Preserve errno within signal handler
Tiwei Bie
tiwei.bie at linux.dev
Sat Jul 26 23:29:32 PDT 2025
From: Tiwei Bie <tiwei.btw at antgroup.com>
We rely on errno to determine if a syscall has failed. However,
the current signal handler may modify errno. Preserve errno within
the signal handler to ensure it remains async-signal safe.
Signed-off-by: Tiwei Bie <tiwei.btw at antgroup.com>
---
arch/um/os-Linux/signal.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c
index 11f07f498270..217a71244b69 100644
--- a/arch/um/os-Linux/signal.c
+++ b/arch/um/os-Linux/signal.c
@@ -201,8 +201,11 @@ static void hard_handler(int sig, siginfo_t *si, void *p)
{
ucontext_t *uc = p;
mcontext_t *mc = &uc->uc_mcontext;
+ int errno_saved = errno;
(*handlers[sig])(sig, (struct siginfo *)si, mc);
+
+ errno = errno_saved;
}
void set_handler(int sig)
--
2.34.1
More information about the linux-um
mailing list