From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794064491; b=c53vHiEhjKEV92ed2KRdRWrLg/4vd4ni9Gc6/YV1oFGvZgy8GORHGzUeOmxbbiAHLLZI bR6Rts06bDZAFn+ytrjL/QdUSQJOAKZb2wcHMjx+Hw0Ks2eqBzYuXnFJme+p948xo+661 2a4pM8MTGYjoUhfdy8gML9qo8p4LOczthjXnx1xDRhbdflocnaC2UPDSFwhs0QbYB4c3u DzJztLD1DirJnYGaNrI7FC7IaYFR34HjMN6N2l+rZmLEofL+hmZagZnQMPl0PVcifyxVy kbx9YFNlUKieMUhXuTWRUofPFGFJ82HUuW9lLJWVl8yvVCdOek+mmwWqQFwrYYu/UFg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794064491; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:User-Agent:X-stable:X-Patchwork-Hint: MIME-Version:Content-Transfer-Encoding; bh=cnr5IRu6t/iudtUN4NUyaclXPUP83MtqXK8dDe+28ig=; b=KxA7xByRCuRjaZ0IKTAmXVY9CXyG+Ksb1QkR83z67cxp5nXH0cuAuKpfOMSOQwPO3C4g CO600nfoXG7JATM2QKk8RtYeWDKVCyZj87pA1o6C89f1WvIWSvngtjObBtBdVD+hDfAN9 uhGhvCU97jCbYl3RaenpsjJLu6htp8Ui+8f94EF33jNuBJEGSDrL1Mxjix4Ub4vYdyzeM v86G4P+w40Rh+hXTNjQWX8KAe53TpF4NzfqkOw3qQsZNk47WD5zIL4p5wB+qlXrM8C3gL QjjZN5sd42OMNAQUXTaJbLaOY15dZxcJMEV5shR6c76iL/HJdULLe63TvMKrLGxQvvg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=YTwyCH5V; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B2F6606A9EE; Sat, 7 Nov 2026 15:14:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=YTwyCH5V Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A83A1F008A2; Sat, 7 Nov 2026 15:14:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1794064491; bh=cnr5IRu6t/iudtUN4NUyaclXPUP83MtqXK8dDe+28ig=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=YTwyCH5VkjA5Xa8J6RKwJqzGAtLt+0X9/TXwV+POq+GfQCZzWAF4YMlj0x0hCUwKz n6G5HsQK0ojC3x1bS2jQrdgZYNgKNt96/RmL8T9M3G8uIMIXCuPLLD8+yrhvs41Dqj rNZGQEzI9Gjjsdv38KZetnbpDPNk5r2qIApDn69E= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Konstantin Khorenko , Eva Kurchatova , Andrew Morton , Shuah Khan , Wei Yang , Sasha Levin Subject: [PATCH 7.3 0527/1257] selftests/core: fix unshare_test with large fs.nr_open Date: Sat, 7 Nov 2026 08:47:03 -0500 Message-ID: <20261107134953.970332482@linuxfoundation.org> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261107134939.434104957@linuxfoundation.org> References: <20261107134939.434104957@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore X-Mailing-List: patches@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 7.3-stable review patch. If anyone has any objections, please let me know. ------------------ From: Konstantin Khorenko [ Upstream commit df0b7e0ea59c43708cff8c7e34da5e2f8d430e5e ] The test assumes fs.nr_open is close to the default 1048576, but some systems set it much higher (e.g. 1073741816). This is systemd's doing: since systemd v240 (2018), PID 1 bumps fs.nr_open and fs.file-max to their largest possible values on boot, as file descriptors are already accounted for by memcg [1]. In that case, dup2() to nr_open + 64 requires the kernel to allocate a file descriptor table with ~1 billion entries, which fails with ENOMEM. On a kernel that already carries 04a2c4b4511d1, dup2() no longer fails with ENOMEM. The allocation is now rejected up front and the caller gets EMFILE instead, without the WARNING, but the test still fails. Cap the nr_open value used for the test's own arithmetic to a known reasonable base value (1048576) and restore the true original value once the test has completed. Link: https://lore.kernel.org/20260814165709.513263-1-khorenko@virtuozzo.com Link: https://github.com/systemd/systemd/commit/a8b627aaed409a15260c25988970c795bf963812 [1] Signed-off-by: Konstantin Khorenko Signed-off-by: Eva Kurchatova Signed-off-by: Andrew Morton Cc: Shuah Khan Cc: Wei Yang Cc: Signed-off-by: Sasha Levin --- tools/testing/selftests/core/unshare_test.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/core/unshare_test.c b/tools/testing/selftests/core/unshare_test.c index ffce75a6c228f..d40e963dd5205 100644 --- a/tools/testing/selftests/core/unshare_test.c +++ b/tools/testing/selftests/core/unshare_test.c @@ -40,6 +40,14 @@ TEST(unshare_EMFILE) ASSERT_EQ(sscanf(buf, "%d", &nr_open), 1); + /* + * Cap nr_open for the duration of the test to avoid ENOMEM from a + * huge fd table allocation; buf/n keep the real original value so + * fs.nr_open can be restored to it once the test is done. + */ + if (nr_open > 1024 * 1024) + nr_open = 1024 * 1024; + ASSERT_EQ(0, getrlimit(RLIMIT_NOFILE, &rlimit)); /* bump fs.nr_open */ @@ -73,10 +81,13 @@ TEST(unshare_EMFILE) if (pid == 0) { int err; + char buf3[32]; + ssize_t n3; - /* restore fs.nr_open */ + /* restore fs.nr_open to the (possibly capped) test baseline */ + n3 = sprintf(buf3, "%d\n", nr_open); lseek(fd, 0, SEEK_SET); - write(fd, buf, n); + write(fd, buf3, n3); /* ... and now unshare(CLONE_FILES) must fail with EMFILE */ err = unshare(CLONE_FILES); EXPECT_EQ(err, -1) @@ -89,6 +100,10 @@ TEST(unshare_EMFILE) EXPECT_EQ(waitpid(pid, &status, 0), pid); EXPECT_EQ(true, WIFEXITED(status)); EXPECT_EQ(0, WEXITSTATUS(status)); + + /* restore the real fs.nr_open value */ + lseek(fd, 0, SEEK_SET); + write(fd, buf, n); } TEST_HARNESS_MAIN -- 2.53.0