]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
login: fix close_range() use
authorKarel Zak <kzak@redhat.com>
Wed, 14 Jul 2021 15:25:57 +0000 (17:25 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 14 Jul 2021 15:25:57 +0000 (17:25 +0200)
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
lib/fileutils.c
login-utils/login.c

index ad54b952cb4834bdb3a008cb96125dff9e42c2de..f86426b964ede5210b39cda7cf14c48d1afa3331 100644 (file)
@@ -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
index 846b718c9bb46cdf1172df3793c8cb82a04d3db8..a979b03acbfd9d957f2ccecb276b48365aa56c8c 100644 (file)
@@ -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
index 48e3fa2e2afa55e2cd399692594e0596c3c5feb3..d926466d3ebc6ebe6412ec6cefc44a0cb2cc4350 100644 (file)
@@ -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