Linux: Fix '__close_nocancel_nostatus' clobbering 'errno' [BZ #33035]

Fix fallout from commit c181840c93 ("Consolidate non cancellable close
call") that caused '__close_nocancel_nostatus' to clobber 'errno' on a
close(2) failure, a 2.27 regression.

The problem came from a rewrite from 'close_not_cancel_no_status' to
'__close_nocancel_nostatus' switching from an inline implementation that
used INTERNAL_SYSCALL macro (which stays away from 'errno') to a call to
'__close_nocancel' function that uses INLINE_SYSCALL_CALL macro (which
does poke at 'errno').

Implement '__close_nocancel_nostatus' in terms of INTERNAL_SYSCALL_CALL
then, which leaves 'errno' intact.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
This commit is contained in:
Maciej W. Rozycki 2025-06-24 21:17:25 +01:00
parent db94e6343a
commit 3b0d495ac4
1 changed files with 1 additions and 1 deletions

View File

@ -73,7 +73,7 @@ hidden_proto (__fcntl64_nocancel)
static inline void
__close_nocancel_nostatus (int fd)
{
__close_nocancel (fd);
INTERNAL_SYSCALL_CALL (close, fd);
}
/* Non cancellable writev syscall that does not also set errno in case of