63 lines
1.9 KiB
Diff
63 lines
1.9 KiB
Diff
|
From b8d99a618baffb4fc03cda4c40e29778b6d77ad4 Mon Sep 17 00:00:00 2001
|
||
|
From: Karel Zak <kzak@redhat.com>
|
||
|
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 <kzak@redhat.com>
|
||
|
---
|
||
|
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 <sys/types.h>
|
||
|
# 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
|
||
|
|