[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