32 lines
1.3 KiB
Diff
32 lines
1.3 KiB
Diff
From 6e2f78948403a4cce45b9e34311c9577c624f066 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Mon, 17 Jun 2019 10:51:25 +0200
|
|
Subject: [PATCH] core: set fs.file-max sysctl to LONG_MAX rather than
|
|
ULONG_MAX
|
|
|
|
Since kernel 5.2 the kernel thankfully returns proper errors when we
|
|
write a value out of range to the sysctl. Which however breaks writing
|
|
ULONG_MAX to request the maximum value. Hence let's write the new
|
|
maximum value instead, LONG_MAX.
|
|
---
|
|
src/core/main.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/core/main.c b/src/core/main.c
|
|
index b33ea1b5b52..e7f51815f07 100644
|
|
--- a/src/core/main.c
|
|
+++ b/src/core/main.c
|
|
@@ -1245,9 +1245,9 @@ static void bump_file_max_and_nr_open(void) {
|
|
#endif
|
|
|
|
#if BUMP_PROC_SYS_FS_FILE_MAX
|
|
- /* I so wanted to use STRINGIFY(ULONG_MAX) here, but alas we can't as glibc/gcc define that as
|
|
- * "(0x7fffffffffffffffL * 2UL + 1UL)". Seriously. 😢 */
|
|
- if (asprintf(&t, "%lu\n", ULONG_MAX) < 0) {
|
|
+ /* The maximum the kernel allows for this since 5.2 is LONG_MAX, use that. (Previously thing where
|
|
+ * different but the operation would fail silently.) */
|
|
+ if (asprintf(&t, "%li\n", LONG_MAX) < 0) {
|
|
log_oom();
|
|
return;
|
|
}
|