From 86f058287faae50caeb6d785aaca0dbb1f1e62b2 Mon Sep 17 00:00:00 2001 From: Slobodan Predolac Date: Thu, 30 Apr 2026 15:42:19 -0700 Subject: [PATCH] Restore errno save/restore in pages_purge_process_madvise_impl TODO comment focused on free only, but this path is reachable via other calls and it is safer to leave errno preservation here. --- src/pages.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages.c b/src/pages.c index bec1cfdc..4bca965a 100644 --- a/src/pages.c +++ b/src/pages.c @@ -662,6 +662,7 @@ pages_purge_process_madvise_impl( return true; } + int saved_errno = get_errno(); size_t purged_bytes = (size_t)syscall(JE_SYS_PROCESS_MADVISE_NR, PIDFD_SELF, (struct iovec *)vec, vec_len, MADV_DONTNEED, 0); if (purged_bytes == (size_t)-1) { @@ -671,6 +672,7 @@ pages_purge_process_madvise_impl( atomic_store_b( &process_madvise_gate, false, ATOMIC_RELAXED); } + set_errno(saved_errno); } return purged_bytes != total_bytes;