From nobody Wed Apr 1 08:41:16 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 D4B7143D508 for ; Tue, 31 Mar 2026 17:51:44 +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=1774979508; cv=none; b=Qd9oDuRsDylBPFTZTtI/C8FDplVcvP7AX7KPVgBQPfhZbf0iefdUl0Vt+wz0gC31ZvlHJCXLhA2sdYRL1QpMKsltlgyqOHVc1o9oF+PX8AI4HBiSNOAMTNjp9uJhw/O2nhEdMPkt85U4BcgN75iPwyJ29GmuMVJKleWcTeJHGE4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979508; c=relaxed/simple; bh=3hZ7nnNcG2pmocjADzjshKOMnlzRdWqhmJwOI83TQcM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WC6N0QCeAbBkDj5fOe9JzCk/DBX848YLVyV2D3uHs9kQdrohtZf5ycDxTuzJ1b7XAFxpeiu2xOJ0Ir2NSSh7pglvQ/8cpU+EwOIYJIMSSLlc6k85fP3e7AbW22sJKmXUki10bsugqwgdbgCqlWHT+sME5It+2JXhgs0XLqlTIWs= 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=uQtJQr/L; 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="uQtJQr/L" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=3hZ7nnNcG2pmocjADzjshKOMnlzRdWqhmJwOI83TQcM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uQtJQr/LUbvX92PZ0pnxP2F2rOm3sRgEbaygP4VZ57azzyA83A0RG+dVK4vMvTG3Z AY1j6lLQYE+LNNEw3HK+4wGrf0ChJZnf/xptbN6TYklCy+8m0krfdS13q+LddR3ghm EP+cNRvjc/iYpLTZHnbXYLLLkd8CzkSTHIaheR0g= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:41 +0200 Subject: [PATCH 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: <20260331-nolibc-makedev-v1-1-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=1235; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=3hZ7nnNcG2pmocjADzjshKOMnlzRdWqhmJwOI83TQcM=; b=gjVCkk9qClkPyjUVXMNpV1yUEk7xD3BQLufD9yxk435XX436/vf9LphZPhfVEoFug09FxvDwl uAJaUenI/uTCWZ1M8nJP/ZimUSlkVVVYlmXeFmXAkEuCS8NAMEoGD4N 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 --- 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 1efd10152e83..fec098ed71e5 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 Wed Apr 1 08:41:16 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 D4D4943DA2D for ; Tue, 31 Mar 2026 17:51:44 +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=1774979507; cv=none; b=Bsk+SbE5knkyKLYNbaA0lyTIDGqXHvlzPpFs2ct+nHKgEfvi4ePr2MlMVNPVyPpU2D9SZ3wbwplkvkp5CsKcDYsNmQ4PtCTCCWguoMKcH2OyB/hXIeDHSKR7M9tndI28lhgqZ/nXKutGGm+0R37OFe8org2oSFc4EuN80X67PQM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979507; c=relaxed/simple; bh=sTkDyHnVcJszAlNFLLtIrNBC8Z6bJW7+UYJPGwzp7tA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TADgVvRRVzLWkDD9ptoMH5gsd6CxvJJlzVtIsL8XSDZVkyeF612NwyVdWGDqnV+71AOUbBR25yHhrGrHNvv1c2FFEXs+zcyPTL5prTy9t54GhNwu1MayHmi0Cpqn6LsfsrtpIWJjlw8gkSRc3zRk0p7/RgsWKVZ5SyNfrInHAVA= 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=aiiXdgsO; 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="aiiXdgsO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=sTkDyHnVcJszAlNFLLtIrNBC8Z6bJW7+UYJPGwzp7tA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aiiXdgsOXoJw7NIuLReWEPq0ula9ddOUMPdmbPWa15FQDeWVwyj7y1mgrA1XgbqvS 5YRZq1Q5KBRutL6p9rSB2nFk/+TsE2pwuKi1eEqVXQcrOVOkm4H3kwxq+SL3OZ+o9S tR1frgMUS9jlH8W/f8ArkDUAv4v9Wf9G+QVI/ZXQ= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:42 +0200 Subject: [PATCH 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: <20260331-nolibc-makedev-v1-2-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=1295; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=sTkDyHnVcJszAlNFLLtIrNBC8Z6bJW7+UYJPGwzp7tA=; b=Vak8uKIqjKuC+TIz4few+JxyWv25EZZShSkSTmuJX8OXWmg4Ji16b06Byd5sxkHwgbOnn3tor cZWrh3EWWkzAbL6WhVjLVS0WN4R5HhYGmf9oi87o8Acpif6zS2vHhyN 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 --- 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 fec098ed71e5..90c206a77f1e 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 Wed Apr 1 08:41:16 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 E76B843E9C9 for ; Tue, 31 Mar 2026 17:51:44 +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=1774979508; cv=none; b=LQD98BuQjCH55oJgcOZQox2qjykWCXgiAk/pCtnhJKzb+b9QduY+rHT59NvSwIP0Qo/wsSNO6R0sGwJ3mdj4sB6q6/1wzx92k5j1OGF8pYIB5/VtPRpQkxDvyw8ykO5lWZrGCw28oNfi0m6roW2+oYuZroEywt8Q1Iimm2x5EbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979508; c=relaxed/simple; bh=vzEFoHCR2CYKDZSpna1sUuxIMUOyproTApG9r2UN1jM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OvdEV61HCfYUCzViGEJGM+qpEoFWHim/OrK4tLv76+axvysaYs1wNlXfeEJCQFIw/J8+YJt8QGJsN9p752plDwSFjbHs4w23bspaziS5y6CJKLKRV86LPZxaQHnF8ZS9eR5d9hGpKnP+f3b+zS/bNXRSHq1PO8eQMkl0/KR9ChM= 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=K25sSkys; 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="K25sSkys" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=vzEFoHCR2CYKDZSpna1sUuxIMUOyproTApG9r2UN1jM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=K25sSkysP5hxF8L2hKlnHlyJk0zThqO/zaC2cR6FAQDCf+YS1pTlNm5zzZcr2qm/o 7pzNGbKvTYvrTFVYWU1NB82goL10qFj/wqXoQ7OkU6UStzF3pvFm5x9fh3NIMkMXjs t+5/hBVgRUdr+tmd3YHvW7m1W6o24BBcb5GQkFXo= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:43 +0200 Subject: [PATCH 3/6] tools/nolibc: transform 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: <20260331-nolibc-makedev-v1-3-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=1325; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=vzEFoHCR2CYKDZSpna1sUuxIMUOyproTApG9r2UN1jM=; b=nM7ZvPrjzORWe9UNpLWW8JOYbVqGdBbGFMTpGZoDyqlU4IsR84I3VypvFOM9Ly1gCdOuvy3ve BnGWtpR6N/0CpDxhaWecbNogJ6piuBiOdRbTvNoRF1v/L7bqgHI/z45 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. Signed-off-by: Thomas Wei=C3=9Fschuh --- tools/include/nolibc/sys/sysmacros.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/include/nolibc/sys/sysmacros.h b/tools/include/nolibc/sy= s/sysmacros.h index 37c33f030f02..eb4a9197546e 100644 --- a/tools/include/nolibc/sys/sysmacros.h +++ b/tools/include/nolibc/sys/sysmacros.h @@ -13,8 +13,19 @@ #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 makedev(unsigned int maj, unsigned int min) +{ + return ((maj & 0xfff) << 8) | (min & 0xff); +} + +static __inline__ unsigned int major(dev_t dev) +{ + return (dev >> 8) & 0xfff; +} + +static __inline__ unsigned int minor(dev_t dev) +{ + return dev & 0xff; +} =20 #endif /* _NOLIBC_SYS_SYSMACROS_H */ --=20 2.53.0 From nobody Wed Apr 1 08:41:16 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 D4C5D43D50D for ; Tue, 31 Mar 2026 17:51:44 +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=1774979507; cv=none; b=EhwbV8nzN3EM+IRn9EVOW+IAwt8qID6Xo1+qs4ZWBSJPLQikQyxZI47LPR21+shMAxW4AR270ZCwuxKXvZFBN/J01KtYGFYlga1JNAEvw1dfNXM8LdltCEgBtV+wJGkdHDHe11230wtCpCmAuqiPu6GSMmI7xqcazQoKOg3qOwc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979507; c=relaxed/simple; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JC0g7OdrgkVo69jhyNev5WVFCFWwVt20vioVyZMKuVzi35z2tg37WJ4Vg+76lp/963sbcyjML9wVtrnuefH0bqzlJomppt4m2yxBDvF2u4qA2WYIvBSYZiu3HluNLht3ECI7k/TE6nkbL1Mh1+6L20SFoMQHuJjXqEQhd3+dzf0= 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=frWCMAdD; 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="frWCMAdD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=frWCMAdDu2bR5iJKDgxB2x3qx00FHiEGt1YRDeSZWQqJLCg1L+mxgFaXSGvtLhiTE dyh22hSMpdhUW7t5tompnOYAN1TQ7KLohbrDtCsHSc9RNY0OsJclbLX4psDKOtHnzC 2K4SvjQP3Rk0N4EenLGYtpPi+kDPb2Do+Tpv5m+g= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:44 +0200 Subject: [PATCH 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: <20260331-nolibc-makedev-v1-4-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=1033; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=Y7/BQXB4k1KpzXK5c57Hycq9GNT/Wa2GJPMiXPqjf2U=; b=bpiO/2VsGty1jwaWJabAaeeQBxq0XS6W45ADGnXpQ6VaAx10D2D9dVJp4fsMfnQF2jQUFjoFE h4EA6AKZNUOD9rfGn9MM4yuGS2umym5ucL5H/zb3LRIJHjU1JkhSRaQ 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 --- 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 Wed Apr 1 08:41:16 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 69CB8441033 for ; Tue, 31 Mar 2026 17:51:49 +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=1774979511; cv=none; b=VZye7ZtQLTDglThlWoCHXbgUzrhaBVlXJJC/GnJx/lJD35pEgsO1G90eTL7r8w7lV2NEcaH7S1sANtGbp/qDaFr41ra8Ecq82FSmmckZ5He6y6+16hngpFsdRwZ2mhmKByqgQxv4gTtS1rxG9RWeCYIOyNGZO9JCWydGwr572vI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979511; c=relaxed/simple; bh=cNzyRUkv8LlMAIAzBV19K56conJ1wAocWhJ4Y/J+dk0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hCXhTjp4G4JedyoW9UeIwiO/7/0oq6Nd27KswW0wxURC67wXBRukzkhhcRUWqI0fAlRqnSeCfiEG8wq5PH+s3PHdfcc2ZhfIaUqk22D6troxbFPoe6CPYQSFDi+YyXZGpOXRdXc8syAhzEX5NVfzHj/hekMVvS5uPMowsafokFo= 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=tL6Smv5p; 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="tL6Smv5p" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=cNzyRUkv8LlMAIAzBV19K56conJ1wAocWhJ4Y/J+dk0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tL6Smv5pxBMfZoarg2ao+DdMvA3MmSTXFiLrAR5J7dUQ+roJ7cE63E3Ae2rNYko/t 0z/49DGnItEWBELx/bnlKVbS5d1g02vkYIGZcy61WACl6BVpJ8Yr4gEcekQOlPQYYz Cwp3GisLn5EMjUDoRAUFrtlLJqcATWroDFpZoFhI= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:45 +0200 Subject: [PATCH 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: <20260331-nolibc-makedev-v1-5-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=2164; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=cNzyRUkv8LlMAIAzBV19K56conJ1wAocWhJ4Y/J+dk0=; b=2wmGfAqg8ZPsHxUkpFBQTeLKZeInvFlkT+Fhjif5i3hXu519Rb8/SFVWSC32WH1FMxygcyDmD hfAIbg11bU6AuqpNcxpfn6QlSBydvmhcqqi+CKGaOXkeDHW3rB5VeIH 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 --- 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 eb4a9197546e..fbae09b934dc 100644 --- a/tools/include/nolibc/sys/sysmacros.h +++ b/tools/include/nolibc/sys/sysmacros.h @@ -12,20 +12,20 @@ =20 #include "../std.h" =20 -/* WARNING, it only deals with the 4096 first majors and 256 first minors = */ static __inline__ dev_t makedev(unsigned int maj, unsigned int min) { - return ((maj & 0xfff) << 8) | (min & 0xff); + return (((dev_t)maj & ~0xfff) << 32) | ((maj & 0xfff) << 8) | + (((dev_t)min & ~0xff) << 12) | (min & 0xff); } =20 static __inline__ unsigned int major(dev_t dev) { - return (dev >> 8) & 0xfff; + return ((dev >> 32) & ~0xfff) | ((dev >> 8) & 0xfff); } =20 static __inline__ unsigned int minor(dev_t dev) { - return dev & 0xff; + return ((dev >> 12) & ~0xff) | (dev & 0xff); } =20 #endif /* _NOLIBC_SYS_SYSMACROS_H */ diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 90c206a77f1e..900e09c0abac 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 Wed Apr 1 08:41:16 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 6A5EA4418E2 for ; Tue, 31 Mar 2026 17:51:49 +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=1774979511; cv=none; b=l2BkECIVWx35u7xWXLgvmgyn0l+Btq9Ks5dz4gTjgZJSg99Ed/r6YH2s/lphRYASGC5UWiuu1ukedD+AeTyAL/kIOtLpSI85yuyouU0bFFuFBVngP9ze2WrSdvmbmVLmLRlnDibMfBnLG1J2eO+jlKK+5TVXVJacu9VrWTsswmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774979511; c=relaxed/simple; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g0VNexkge+qdMafLGr9a239cMDj20Nszp4ivjW1p0ZnAkDtYGZMnmdgOqKAVLeJ/YPPR+UnwoJ54AiyEiRZlFAoaTYSsYLS1UrHJx7SeDBle3YjFZK0+XLQyoWggS9Vgid3dpcjBTfAelI2guluIhfFmW3bQPOsF6xLqNOn6+cM= 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=GvfYnGQd; 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="GvfYnGQd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1774979503; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GvfYnGQdyvcM9c67N3wI/wK71s0rEWMQB9dSqy2/9ID0Xj4vh8SPLWIyUzhuBHmd/ xsqzHGJ480ekULXMVsRVg2N/j/CM3T/gY/rYHNeyySPoOhJ7aCfyUCmTGCDOC+waj+ 5qT37BeejFy6IZyiVMI5IAXd9Xv5HRHz/INo0Wzc= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Tue, 31 Mar 2026 19:51:46 +0200 Subject: [PATCH 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: <20260331-nolibc-makedev-v1-6-ee79ee31e4d6@weissschuh.net> References: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@weissschuh.net> In-Reply-To: <20260331-nolibc-makedev-v1-0-ee79ee31e4d6@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=1774979502; l=1719; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=+i8kVX8Bg1s87BMdY8AkjSU/wqzt0gQVsNVHCATxmSc=; b=VkG1n2dV1F48Kpljbu3NMDGc5a9giD5MfWOijMEol//HcDqFvDx4+PfU8EAG8Ft+JolyyD0UE RgzAPRx836QCjBbDaVEw4Xfy/6lf1+Mp95LO/GMtwRYQ4h9XNZZH1mw 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 --- 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