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.

/cc @brauner

Fixes: #12803
This commit is contained in:
Lennart Poettering 2019-06-17 10:51:25 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 11344d82f1
commit 6e2f789484
1 changed files with 3 additions and 3 deletions

View File

@ -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;
}