From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7CD035F5EC for ; Sat, 4 Apr 2026 08:08:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; cv=none; b=PrgbOr4SIJZzhRt8cNEYCqpIj7mvEPWtn/K93sFaz9J4RbzJOA0GG8wIU36gy3sEteCTC37cG5edVDncB87HClKfLjYeqcy3hP2nEIqKrmHEaU0t19a57cVZlS8J6qbj6hE/4nMDJHj++MQ1j2dEvuZryUFQcmcJZl4FlDkAqsI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; c=relaxed/simple; bh=1/M9TH9A54/jMZabc2C291U6WuFZXjitFeOszbg6lVQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WdbUiCSTrTCyDYLPRfjP1AU7zB4emL1S36gk8S2HlgdoXtousKdaFJK6h2eFrRoklnJ4thyXCI3rGyV0YU46XOUCkU3Wow3sQP0GabDKgaB8ibGGHUEUQEOh4z9bOyo/jSM1XWH47cUcpC4F+aka+b2vGTqYQn56+ECJjpW4amE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=DoBh/ydl; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="DoBh/ydl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=1/M9TH9A54/jMZabc2C291U6WuFZXjitFeOszbg6lVQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DoBh/ydlzwlT63NeitxOVdbjGHwrsFKNMyIbwfWPn77wJaTcZUbYRrwipNKTxb73W U4IgbHV8eAc6l3XJ/jYQTHPBzmgWviGtLwRag5v6sL5Zfqf91QmeKaa4JV3wm61eTv K0MfxklQRcJbLEa5f3fFtPGYFLbcme8FaCip266c= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:18 +0200 Subject: [PATCH v2 1/6] selftests/nolibc: add some tests for makedev() and friends Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-1-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=1235; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=1/M9TH9A54/jMZabc2C291U6WuFZXjitFeOszbg6lVQ=; b=tbl8EyT+/L+uzWDZDfrVLrr+xsUztPoxmAK78DCLtQ5awFE6wxDNPkGVS0j78nSHAtMGxpKTB c9Yv06hXvnGAFm8Stnc752VSpvFIZ7CsmOzzyp/AMhYQgq4lBU4PjaB X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= These functions/macros are about to be changed. Add some tests to make sure they continue working. As they only handle small dev_t values, only test those for now. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/testing/selftests/nolibc/nolibc-test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index e6fef6eb1db1..4a9b6eb9e477 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -1680,6 +1680,9 @@ int run_stdlib(int min, int max) CASE_TEST(memchr_foobar6_o); EXPECT_STREQ(1, memchr("foobar", 'o'= , 6), "oobar"); break; CASE_TEST(memchr_foobar3_b); EXPECT_STRZR(1, memchr("foobar", 'b'= , 3)); break; CASE_TEST(time_types); EXPECT_ZR(is_nolibc, test_time_types= ()); break; + CASE_TEST(makedev); EXPECT_EQ(1, makedev(0x12, 0x34), 0x= 1234); break; + CASE_TEST(major); EXPECT_EQ(1, major(0x1234), 0x12); b= reak; + CASE_TEST(minor); EXPECT_EQ(1, minor(0x1234), 0x34); b= reak; =20 case __LINE__: return ret; /* must be last */ --=20 2.53.0 From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA907397687 for ; Sat, 4 Apr 2026 08:08:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290116; cv=none; b=LrvK1ULpEg9w+9/SSRlgljOaiVPjhY2CPVQL+r3d3wUfvSEiSDPCVObtYtmHzQEc6WrjfuriPFzpcWBlQkOL0qiI7fvvGVTxVEJZ+CEJlo88KZu6toTvypNW3bWzwGab3aRAh9eunPB/o1S2ENsB7WrIL/dVrBnfIxC4XsUvxag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290116; c=relaxed/simple; bh=QR53G4P7xTuqLbTyOcJzHsxo6SPaBqYfm2g5I55WB88=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZQUYoMxpj8zUXmP8fIT5sNy4VNuUZBYengBYNvzYIILMoDqsSuMByvlcsgISRXMKZQKdsmZKQZsj8uXRb/tFda3M9QbSevrJidMu7Q8N8JzRcmOBojssaCppYWeLe37XYPvMUpNzTiYhtxjG6vZiiRwyR/zzKoQ23m9Cw3ohwFs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=JZknp1C0; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="JZknp1C0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=QR53G4P7xTuqLbTyOcJzHsxo6SPaBqYfm2g5I55WB88=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JZknp1C0DiN0PnL/SfEbpGZvA/beGqL5eZoEtjvZnzOhP3QuVSSmKPQ1JevIBXaNI wC6nMkTgdebZB3HZ+yMdmj2NBhbjTJzBP4tsQdPfX6LRKDU2wWC512smgynJgt51P4 BxB61igbYrU2AMXArUgJqdiTXZCx8lS0l+1yXIJI= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:19 +0200 Subject: [PATCH v2 2/6] selftests/nolibc: add a test for stat().st_rdev Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-2-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=1295; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=QR53G4P7xTuqLbTyOcJzHsxo6SPaBqYfm2g5I55WB88=; b=Xkl2f2ouaL897ctF7FB80JvCFVNp4OJpyPUhzSjjO5NcOGOgXOPDFXVaBW1LTVOcNkoyKI0/f zB4ypSAYp8nDEE/ZLs0/vN42IO081lljphmP9pA7n3oWFtto4P589vj X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The handling of 'dev_t' values is about to be changed. Add a test to make sure they are returned correctly from stat(). Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/testing/selftests/nolibc/nolibc-test.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 4a9b6eb9e477..88d076f67402 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -1485,6 +1485,7 @@ int run_syscall(int min, int max) CASE_TEST(select_fault); EXPECT_SYSER(1, select(1, (void *)1, NULL,= NULL, 0), -1, EFAULT); break; CASE_TEST(stat_blah); EXPECT_SYSER(1, stat("/proc/self/blah", &s= tat_buf), -1, ENOENT); break; CASE_TEST(stat_fault); EXPECT_SYSER(1, stat(NULL, &stat_buf), -1,= EFAULT); break; + CASE_TEST(stat_rdev); EXPECT_SYSZR(1, ({ int ret =3D stat("/dev/= null", &stat_buf); ret ?: stat_buf.st_rdev !=3D makedev(1, 3); })); break; CASE_TEST(stat_timestamps); EXPECT_SYSZR(1, test_stat_timestamps()); b= reak; CASE_TEST(symlink_root); EXPECT_SYSER(1, symlink("/", "/"), -1, EEX= IST); break; CASE_TEST(timer); EXPECT_SYSZR(1, test_timer()); break; --=20 2.53.0 From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7E1839659F for ; Sat, 4 Apr 2026 08:08:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; cv=none; b=QP9T8F0Q0JXxdXaES7o/LS/tSQrHhxQSRp2ttvyRgUPJyitwUB+TwyVufPXwwLBWPFLsbOJUztv51odibxsreRtwEPDU0IPCW3mb9Dvq4s5WBk4B8wtqyo5J+uuqd5ur/aJvBj7XWslvpiGHW1toISi3jDZV+mLhBuG5x0bC7u4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; c=relaxed/simple; bh=RwDJVdLvOhDyI6Smej7owVGSmeIE/ZpEwpFUbCefhhQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VtxLeHoYks0a661kH+riumxHtx4rGZjaqKPuPjLqKoKeIperpGJjQIRqTQ58O7jHVm4B5Tb8NJ7rsJzrXBAXXznzXZdlGYJ6cAM/84TzWsA2yimMvQvrNcZkQSJEDiuJm67DtsJcmyNFZ+c6n96Af1fgQhLtEspuv/R+jJrQrpA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=tvAUbuhq; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="tvAUbuhq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=RwDJVdLvOhDyI6Smej7owVGSmeIE/ZpEwpFUbCefhhQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tvAUbuhqPiKL0jENmTbx36fYc+//FQW/N0MkpOfdt+NgN55VdrN16wOshU7H+J/Ue MlbegEZ23ywvymaI7WUscorBlIjRE9dBAmw3k3ww2G5mBCLcat5Lzg0sa8cpb7j3cW f5CAGUfJJsMCkd74B2I6e505UPxCmyiVhq3aOR9Y= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:20 +0200 Subject: [PATCH v2 3/6] tools/nolibc: move the logic of makedev() and friends into functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-3-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=1573; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=RwDJVdLvOhDyI6Smej7owVGSmeIE/ZpEwpFUbCefhhQ=; b=MrIxdxqmTVucMqpdOPPtCneBLqzC2AlPBWT2wHKDLP1ANu/vuWm3YvuBDFV3mLBVIp1wUxvT6 O9rJ9rKyK8EBiQrr1CNOy6LGWNvdQXD31FknUh3KSbRCCJ3IratZvKc X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= Functions make it easier to keep the input and output types straight and avoid duplicate evaluations of their arguments. Also these functions will become a bit more complex to handle full 64-bit 'dev_t' which is easier to read in a function. Still stay compatible with code which expects these to be macros. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/sysmacros.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tools/include/nolibc/sys/sysmacros.h b/tools/include/nolibc/sy= s/sysmacros.h index 37c33f030f02..347a95341ea2 100644 --- a/tools/include/nolibc/sys/sysmacros.h +++ b/tools/include/nolibc/sys/sysmacros.h @@ -13,8 +13,25 @@ #include "../std.h" =20 /* WARNING, it only deals with the 4096 first majors and 256 first minors = */ -#define makedev(major, minor) ((dev_t)((((major) & 0xfff) << 8) | ((minor)= & 0xff))) -#define major(dev) ((unsigned int)(((dev) >> 8) & 0xfff)) -#define minor(dev) ((unsigned int)((dev) & 0xff)) +static __inline__ dev_t __nolibc_makedev(unsigned int maj, unsigned int mi= n) +{ + return ((maj & 0xfff) << 8) | (min & 0xff); +} + +#define makedev(maj, min) __nolibc_makedev(maj, min) + +static __inline__ unsigned int __nolibc_major(dev_t dev) +{ + return (dev >> 8) & 0xfff; +} + +#define major(dev) __nolibc_major(dev) + +static __inline__ unsigned int __nolibc_minor(dev_t dev) +{ + return dev & 0xff; +} + +#define minor(dev) __nolibc_minor(dev) =20 #endif /* _NOLIBC_SYS_SYSMACROS_H */ --=20 2.53.0 From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C36973A5E8C for ; Sat, 4 Apr 2026 08:08:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290118; cv=none; b=UzM3TEyQaUd2b+1CtIjbk03oGqGHLyPiDnlVPSlx/QtSJ4vkHjIJqvKkx7U2ElKVbT2kClIIpUYe74Xhnt9EMmHGkU5j2uRHSnJ+9HluV0jLlyRYVUp4vmRsgH4XmNrjHWQ4kfI+KINrjORA18t+InwnRIQDd3Uc2ZUI8JSDGZ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290118; c=relaxed/simple; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dPim7yArsFRP9SMlUidOPeBa2Exz3wLkyvZ8I6X0NueR3VfpyeK8HmbhcG/9gbwyfygLsyIAlIf2XS1MML6hmjIrk6gsgaLHiGqhTjYDINpB/KNSPitd/VvI2hRU6p/f1S0MvY3kp9AfONy9jLUDPwvlswaWR/8/qGv/0r9pkYQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=AjDvsbbN; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="AjDvsbbN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AjDvsbbNElcYLHALvuIiNwuFARUYooR9pHX50pEzdhODkvbHHct8ynUMYKf2hTnL4 sAE//VEMI/yYNKBnRjIChs1BwQ2fUzWbjiJeWYk6WFrm0obvgWjis68FEZUUrijH3O DN4SWenP/XNUVM87Cr3WxygwZcYA57wwKdZAioRg= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:21 +0200 Subject: [PATCH v2 4/6] tools/nolibc: make dev_t 64 bits wide Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-4-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=1033; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; b=QcBBNGYC0AmVqtggoSUSuspeQiheGsYARIdktz6OTv6xszTPkaIlXXTE3cmMHTnI/H9lhfzP/ NHdZIJiJaOKAY/gT35wkhhp58DGpSTpSIAf92qEnQy0Sk81cWvBffeR X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= statx() returns both 32-bit minor and major numbers. For both of them to fit into the 'dev_t' in 'struct stat', that needs to be 64 bits wide. The other uses of 'dev_t' in nolibc are makedev() and friends and mknod(). makedev() and friends are going to be adapted in an upcoming commit and mknod() will silently truncate 'dev_t' to 'unsigned int' in the kernel, similar to other libcs. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/std.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/include/nolibc/std.h b/tools/include/nolibc/std.h index b9a116123902..dc2dc46f8ca8 100644 --- a/tools/include/nolibc/std.h +++ b/tools/include/nolibc/std.h @@ -19,7 +19,7 @@ #include =20 /* those are commonly provided by sys/types.h */ -typedef unsigned int dev_t; +typedef uint64_t dev_t; typedef uint64_t ino_t; typedef unsigned int mode_t; typedef signed int pid_t; --=20 2.53.0 From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D97C3A5E75 for ; Sat, 4 Apr 2026 08:08:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290117; cv=none; b=ijJwZAAGfjMsWixFtGMFwOuhdOw99byU3w2uCRkuoViV2znr4cJo/ie9/kzgOW7MjcfSUIdc8hxFLdPYehN1ZfZxsTpXvaJl0l7k2e+oP12KcHWvTDCW+Bq3Vubbk8y/5eLO/V+XweWXET6CE46wzyZPmstCVcRRkE+iBlygLww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290117; c=relaxed/simple; bh=U81F3N9HwR2PBfmzkle6jhkq3oqPHvCYQvIIrBQmhHI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kagkkTIsURmennaq098dTHqxMoiZWlAYqWRFnAREJei5tB/ptQzdHPS/oCKbxUIv8823A4GeWMureifeLkfwD6gqE3Q3lsMoFeNyiyX81AoSzAk/ztRF3PJ/kofEADgeR2FYaiGGqEJSemJHE0uJq6qwn+LwM4pUrVdMfgdSryM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=KtYHOusw; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="KtYHOusw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=U81F3N9HwR2PBfmzkle6jhkq3oqPHvCYQvIIrBQmhHI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KtYHOuswUzHh1Kc0jtcRg3OESeYNQxDG5aGA9glx+qfotURY6kqVYSH2xSpsmQRG/ A+28Ziza9Y3Qjhh1L2WlpeyRfZfuskKfhVf6NEeEs3Ie/NdqxFsXySksJ5mi39qH8u Byeva9ymWdsktAusDYEuOE577GiLhktqxvEb0SG0= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:22 +0200 Subject: [PATCH v2 5/6] tools/nolibc: handle all major and minor numbers in makedev() and friends Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-5-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=2295; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=U81F3N9HwR2PBfmzkle6jhkq3oqPHvCYQvIIrBQmhHI=; b=md4XclS/N52CH9ob9rHBFYpoVNFnpGLqi0yZdDZUV8zmUqcfUqwNMWlCj6F14gsgFZ6DF6Hjn lEliGBcUP9KDwqyCZ+wDFvx1oSpJ6G+pd1WgTlZc1nqESRW8YEnqwF9 X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= Remove the limitation of only handling small major and minor numbers. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/sysmacros.h | 8 ++++---- tools/testing/selftests/nolibc/nolibc-test.c | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/include/nolibc/sys/sysmacros.h b/tools/include/nolibc/sy= s/sysmacros.h index 347a95341ea2..ff9dd85ca59c 100644 --- a/tools/include/nolibc/sys/sysmacros.h +++ b/tools/include/nolibc/sys/sysmacros.h @@ -12,24 +12,24 @@ =20 #include "../std.h" =20 -/* WARNING, it only deals with the 4096 first majors and 256 first minors = */ static __inline__ dev_t __nolibc_makedev(unsigned int maj, unsigned int mi= n) { - return ((maj & 0xfff) << 8) | (min & 0xff); + return (((dev_t)maj & ~0xfff) << 32) | ((maj & 0xfff) << 8) | + (((dev_t)min & ~0xff) << 12) | (min & 0xff); } =20 #define makedev(maj, min) __nolibc_makedev(maj, min) =20 static __inline__ unsigned int __nolibc_major(dev_t dev) { - return (dev >> 8) & 0xfff; + return ((dev >> 32) & ~0xfff) | ((dev >> 8) & 0xfff); } =20 #define major(dev) __nolibc_major(dev) =20 static __inline__ unsigned int __nolibc_minor(dev_t dev) { - return dev & 0xff; + return ((dev >> 12) & ~0xff) | (dev & 0xff); } =20 #define minor(dev) __nolibc_minor(dev) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 88d076f67402..7606a8b68d28 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -1684,6 +1684,9 @@ int run_stdlib(int min, int max) CASE_TEST(makedev); EXPECT_EQ(1, makedev(0x12, 0x34), 0x= 1234); break; CASE_TEST(major); EXPECT_EQ(1, major(0x1234), 0x12); b= reak; CASE_TEST(minor); EXPECT_EQ(1, minor(0x1234), 0x34); b= reak; + CASE_TEST(makedev_big); EXPECT_EQ(1, makedev(0x11223344, 0x5= 5667788), 0x1122355667734488); break; + CASE_TEST(major_big); EXPECT_EQ(1, major(0x112235566773448= 8), 0x11223344); break; + CASE_TEST(minor_big); EXPECT_EQ(1, minor(0x112235566773448= 8), 0x55667788); break; =20 case __LINE__: return ret; /* must be last */ --=20 2.53.0 From nobody Sun Jun 14 02:10:12 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BEAB3A4525 for ; Sat, 4 Apr 2026 08:08:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; cv=none; b=BZAiQTb0R//7C5VJSCQMhlDnE7o+pPXxfIRBsPfk3evu5RyBYX9jUKN37yf8sJCjHssikCNVyfK7aUUA9uH7KEDNkemULS9drCpilSJdXVOUxX6ACpv9DEM3EqEjfzj7xqNCnAuKm/Wi0CExcm9iQTncUssqwbCCLjDDd0fjj8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775290115; c=relaxed/simple; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xr4t7hKJ0qGnkaF2F2jen+qptVZceLe4pLcZgZyd5OYXuoWN2/o3P8At6h/crlFe1lmm3x3jlzLEBTh/hY2F3sFahtqKTJeUXKze11iEwo4xCRjq2GratFqv7ik9aIS18A1m+vuMhx+4a8E7LCAQfhhJEnYpG87O4O6h6qT8OKQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=LuVggK3C; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="LuVggK3C" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775290112; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LuVggK3CZaD0IKjPfrFKBCPAXD9jV025ek6nVewn3hIVz0CsXIxzHnyXU+qsbxurK gJKBieVllo9CNLwsUDcJiCJCNHm4DZaLDIiuBN8B8AMg20xLdrfSsqrlbhT8kUdpox gyeyIVHViNsbZ1ELrNQGISG20L8hO/8FvxYSLYAo= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sat, 04 Apr 2026 10:08:23 +0200 Subject: [PATCH v2 6/6] tools/nolibc: use makedev() in fstatat() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260404-nolibc-makedev-v2-6-456a429bf60c@weissschuh.net> References: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> In-Reply-To: <20260404-nolibc-makedev-v2-0-456a429bf60c@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775290111; l=1719; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; b=lZPkKwSUA/XrlqZUvPUsAiJojlajJzRGPmhloFGecwvfs4IcCY/c7oZhZeuN6dJYOuIhtt6dW AdWJ/eGdGt/BrzrOwkzd3wrIAIvHy248bUThn0NVflkCYiTKjA0UxpU X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= fstatat() contains two open-coded copies of makedev() to handle minor numbers >=3D 256. Now that the regular makedev() handles both large minor and major numbers correctly use the common function. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/stat.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tools/include/nolibc/sys/stat.h b/tools/include/nolibc/sys/sta= t.h index b2ef34a617ca..07ae715ff253 100644 --- a/tools/include/nolibc/sys/stat.h +++ b/tools/include/nolibc/sys/stat.h @@ -13,6 +13,7 @@ #include "../arch.h" #include "../types.h" #include "../sys.h" +#include "../sys/sysmacros.h" =20 /* * int statx(int fd, const char *path, int flags, unsigned int mask, struc= t statx *buf); @@ -49,17 +50,13 @@ int fstatat(int fd, const char *path, struct stat *buf,= int flag) if (ret =3D=3D -1) return ret; =20 - buf->st_dev =3D ((statx.stx_dev_minor & 0xff) - | (statx.stx_dev_major << 8) - | ((statx.stx_dev_minor & ~0xff) << 12)); + buf->st_dev =3D makedev(statx.stx_dev_major, statx.stx_dev_minor= ); buf->st_ino =3D statx.stx_ino; buf->st_mode =3D statx.stx_mode; buf->st_nlink =3D statx.stx_nlink; buf->st_uid =3D statx.stx_uid; buf->st_gid =3D statx.stx_gid; - buf->st_rdev =3D ((statx.stx_rdev_minor & 0xff) - | (statx.stx_rdev_major << 8) - | ((statx.stx_rdev_minor & ~0xff) << 12)); + buf->st_rdev =3D makedev(statx.stx_rdev_major, statx.stx_rdev_min= or); buf->st_size =3D statx.stx_size; buf->st_blksize =3D statx.stx_blksize; buf->st_blocks =3D statx.stx_blocks; --=20 2.53.0