summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/util-linux/util-linux/0001-login-fix-close_range-use.patch
blob: 7a47597bd6090aa00e51c77127acee3e6e9485f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 76ae0badd3fd7c8653fa4d3c78d2dcfcec51d23d 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.

Upstream-Status: Backport [https://github.com/karelzak/util-linux/commit/b8d99a618baffb4fc03cda4c40e29778b6d77ad4]
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 ad54b95..f86426b 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 846b718..a979b03 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 7fefd05..94a042d 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
@@ -1358,7 +1358,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.32.0