From nobody Wed Apr 1 10:00:28 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