From b8d99a618baffb4fc03cda4c40e29778b6d77ad4 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 14 Jul 2021 17:25:57 +0200 Subject: [PATCH] login: fix close_range() use This new syscall comes with three arguments (see kernel commit 278a5fbaed89dacd04e9d052f4594ffd0e0585de). Not sure why util-linux assume only two. Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1981729 Signed-off-by: Karel Zak --- include/fileutils.h | 4 ++-- lib/fileutils.c | 2 +- login-utils/login.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/fileutils.h b/include/fileutils.h index ad54b952c..f86426b96 100644 --- a/include/fileutils.h +++ b/include/fileutils.h @@ -82,9 +82,9 @@ static inline struct dirent *xreaddir(DIR *dp) # if defined(SYS_close_range) # include # ifndef HAVE_CLOSE_RANGE -static inline int close_range(unsigned int first, unsigned int last) +static inline int close_range(unsigned int first, unsigned int last, int flags) { - return syscall(SYS_close_range, first, last); + return syscall(SYS_close_range, first, last, flags); } # endif # define HAVE_CLOSE_RANGE 1 diff --git a/lib/fileutils.c b/lib/fileutils.c index 846b718c9..a979b03ac 100644 --- a/lib/fileutils.c +++ b/lib/fileutils.c @@ -189,7 +189,7 @@ int main(int argc, char *argv[]) ignore_result( dup(STDIN_FILENO) ); # ifdef HAVE_CLOSE_RANGE - close_range(STDERR_FILENO + 1, ~0U); + close_range(STDERR_FILENO + 1, ~0U, 0); # else ul_close_all_fds(STDERR_FILENO + 1, ~0U); # endif diff --git a/login-utils/login.c b/login-utils/login.c index 48e3fa2e2..d926466d3 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -1357,7 +1357,7 @@ static void initialize(int argc, char **argv, struct login_context *cxt) #endif } #ifdef HAVE_CLOSE_RANGE - close_range(STDERR_FILENO + 1, ~0U); + close_range(STDERR_FILENO + 1, ~0U, 0); #else ul_close_all_fds(STDERR_FILENO + 1, ~0U); #endif -- 2.31.1