From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (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 79D99245020; Mon, 23 Mar 2026 15:01:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278070; cv=none; b=jw93sCzErvgtjVvyfVzpyj92MnpCjAVjSVfz8gBOQGldZSN1E9+lPsN8k2XXNpJOyWzbKAspmW+VhqJFNGcR01pCKKxbhARJlgu53gQyH5ydaz4SkzuBvRBTMHLGU8KV7QYT38KuQgLeHkHEafcyuh40mbqrVjY/KTkH5Pg7pLo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278070; c=relaxed/simple; bh=tEEgkiZs3Txk28j7BqRxxstVKJ421N/CH6XstsQpICk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YjwAkh638oRXyFJY9FpLcAwg5qAg0SUosNLjItrPPBAwBkxRNovDZZHfLVgihSJgidLp9qFbef4gzwCzV/nxm3UpYMcme7QQLHGSaff2kBlhnj4Si+gEoLuxuFk2J4ZCDG+g5ClWifP4hrkQHAkoTtp9OiG+fZ4xf11F+I8Muac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=D2V+5mF2; arc=none smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="D2V+5mF2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278069; x=1805814069; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tEEgkiZs3Txk28j7BqRxxstVKJ421N/CH6XstsQpICk=; b=D2V+5mF2Xxivkb/lqemhFGTECdKUxNq5j7LVvbnW5pBwcwxK2ucytGlY stoLD4SLwCAQRt9734Qk//RU3bNNloMLQW7zEuZyxqOwxmgyDQHyabr28 VhyBZph/mDOHVS8CpYETzbCn3hXcencEp5artO7AdWv3c9svz5S+P5Jk2 qZZ7RcYA1UrxBJWd+LPBVmV88MYhLnx1YtXjx0ysITA+ESYxKRrPZiH0d q4BczUuQLXrIyTFV3IqApzN7GNNAGgqiIEyefU4UCty4CGHQR632y+7c1 RQ6xJ5oszxFn8WNlBJh0EiEslFPCuOy6zsISc5xKGw+50lOOydZReIeWf Q==; X-CSE-ConnectionGUID: ZIkhZUG2TJGtjmLKp/f1kw== X-CSE-MsgGUID: uBAa7mrnTSetmXz6KD8hsQ== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="74456169" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="74456169" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:05 -0700 X-CSE-ConnectionGUID: 21TjuvBKTzu3CogEE/azjQ== X-CSE-MsgGUID: jKCxOJ+oSIuNFajlZpVCnA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="223119640" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa006.jf.intel.com with ESMTP; 23 Mar 2026 08:01:01 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 2092499; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 1/6] initramfs_test: add fill_cpio() format parameter Date: Mon, 23 Mar 2026 15:54:17 +0100 Message-ID: <20260323150054.3587083-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Disseldorp fill_cpio() uses sprintf() to write out the in-memory cpio archive from an array of struct initramfs_test_cpio. This change allows callers to override the cpio sprintf() format string so that future tests can intentionally corrupt the header with non-hex values. Signed-off-by: David Disseldorp Reviewed-by: Andy Shevchenko Signed-off-by: Andy Shevchenko --- init/initramfs_test.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/init/initramfs_test.c b/init/initramfs_test.c index 2ce38d9a8fd0..7b6ecab794c7 100644 --- a/init/initramfs_test.c +++ b/init/initramfs_test.c @@ -27,7 +27,10 @@ struct initramfs_test_cpio { char *data; }; =20 -static size_t fill_cpio(struct initramfs_test_cpio *cs, size_t csz, char *= out) +#define CPIO_HDR_FMT "%s%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%0= 8x%s" + +static size_t fill_cpio(struct initramfs_test_cpio *cs, size_t csz, char *= fmt, + char *out) { int i; size_t off =3D 0; @@ -38,9 +41,7 @@ static size_t fill_cpio(struct initramfs_test_cpio *cs, s= ize_t csz, char *out) size_t thislen; =20 /* +1 to account for nulterm */ - thislen =3D sprintf(pos, "%s" - "%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x" - "%s", + thislen =3D sprintf(pos, fmt, c->magic, c->ino, c->mode, c->uid, c->gid, c->nlink, c->mtime, c->filesize, c->devmajor, c->devminor, c->rdevmajor, c->rdevminor, c->namesize, c->csum, @@ -102,7 +103,7 @@ static void __init initramfs_test_extract(struct kunit = *test) /* +3 to cater for any 4-byte end-alignment */ cpio_srcbuf =3D kzalloc(ARRAY_SIZE(c) * (CPIO_HDRLEN + PATH_MAX + 3), GFP_KERNEL); - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); =20 ktime_get_real_ts64(&ts_before); err =3D unpack_to_rootfs(cpio_srcbuf, len); @@ -177,7 +178,7 @@ static void __init initramfs_test_fname_overrun(struct = kunit *test) /* limit overrun to avoid crashes / filp_open() ENAMETOOLONG */ cpio_srcbuf[CPIO_HDRLEN + strlen(c[0].fname) + 20] =3D '\0'; =20 - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); /* overwrite trailing fname terminator and padding */ suffix_off =3D len - 1; while (cpio_srcbuf[suffix_off] =3D=3D '\0') { @@ -219,7 +220,7 @@ static void __init initramfs_test_data(struct kunit *te= st) cpio_srcbuf =3D kmalloc(CPIO_HDRLEN + c[0].namesize + c[0].filesize + 6, GFP_KERNEL); =20 - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); =20 err =3D unpack_to_rootfs(cpio_srcbuf, len); KUNIT_EXPECT_NULL(test, err); @@ -274,7 +275,7 @@ static void __init initramfs_test_csum(struct kunit *te= st) =20 cpio_srcbuf =3D kmalloc(8192, GFP_KERNEL); =20 - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); =20 err =3D unpack_to_rootfs(cpio_srcbuf, len); KUNIT_EXPECT_NULL(test, err); @@ -284,7 +285,7 @@ static void __init initramfs_test_csum(struct kunit *te= st) =20 /* mess up the csum and confirm that unpack fails */ c[0].csum--; - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); =20 err =3D unpack_to_rootfs(cpio_srcbuf, len); KUNIT_EXPECT_NOT_NULL(test, err); @@ -330,7 +331,7 @@ static void __init initramfs_test_hardlink(struct kunit= *test) =20 cpio_srcbuf =3D kmalloc(8192, GFP_KERNEL); =20 - len =3D fill_cpio(c, ARRAY_SIZE(c), cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, cpio_srcbuf); =20 err =3D unpack_to_rootfs(cpio_srcbuf, len); KUNIT_EXPECT_NULL(test, err); @@ -371,7 +372,7 @@ static void __init initramfs_test_many(struct kunit *te= st) }; =20 c.namesize =3D 1 + sprintf(thispath, "initramfs_test_many-%d", i); - p +=3D fill_cpio(&c, 1, p); + p +=3D fill_cpio(&c, 1, CPIO_HDR_FMT, p); } =20 len =3D p - cpio_srcbuf; @@ -425,7 +426,7 @@ static void __init initramfs_test_fname_pad(struct kuni= t *test) } }; =20 memcpy(tbufs->padded_fname, "padded_fname", sizeof("padded_fname")); - len =3D fill_cpio(c, ARRAY_SIZE(c), tbufs->cpio_srcbuf); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, tbufs->cpio_srcbuf); =20 err =3D unpack_to_rootfs(tbufs->cpio_srcbuf, len); KUNIT_EXPECT_NULL(test, err); @@ -481,7 +482,7 @@ static void __init initramfs_test_fname_path_max(struct= kunit *test) memcpy(tbufs->fname_oversize, "fname_oversize", sizeof("fname_oversize") - 1); memcpy(tbufs->fname_ok, "fname_ok", sizeof("fname_ok") - 1); - len =3D fill_cpio(c, ARRAY_SIZE(c), tbufs->cpio_src); + len =3D fill_cpio(c, ARRAY_SIZE(c), CPIO_HDR_FMT, tbufs->cpio_src); =20 /* unpack skips over fname_oversize instead of returning an error */ err =3D unpack_to_rootfs(tbufs->cpio_src, len); --=20 2.50.1 From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (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 33CC223E25B; Mon, 23 Mar 2026 15:01:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278069; cv=none; b=BBACPkzqD8Mwb8yQvn4TsZQDJzaA7L9ILhgTjhdg7W3MMVWLyFosjYrK/bMRgY2Td685wpoquED3dzLUzIyiRDb2KIYwN3AUQj/pF5HcWHdiwe5nI+sTrXLm9Krq/1wQcu4QKtg19SXuMo2CuybBkq16EZSxMHik4jmJ9LGX7qo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278069; c=relaxed/simple; bh=u18iTr5PRqvoh7iTQu1HrKZDXlL61UdRdRTUhmb3GAk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i0yLUfWT3/4+C3JEXI9BpOhzRCWaOCGBD4QB6uvJdn18TRMeqmyCa8+z9922tIL4R3q5omK7m/1Q/QCvXAf4BQF8psZfMtC+zjdwlh+m9Gq6eJSp2pCrFHwJqdJtYE/kC9lkau/m/1YR4fW6hYpy+NOMHrf/VvCpM5oBzIJrOFc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bCQ73ImG; arc=none smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bCQ73ImG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278068; x=1805814068; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=u18iTr5PRqvoh7iTQu1HrKZDXlL61UdRdRTUhmb3GAk=; b=bCQ73ImGlcyJTVa0/y61mhdenI6Ulxl4wiwWFCGz4xK7a68KlLm9zV8P kOG/T+eNvVucgAa8jSkmY0FUh3nnxFFdjp9j8ASDbKQvC+0fmrqbj67jZ h65Rd/BqXW5gU9gy8si/1ToUtvnIgx42nljk/F2tr8stpySlFyd+Ihw3z Z4vCMsD3iRhITExMctPmyH2kIoeBc1aUN+Bu8UkQsNYHjriugjWpW5Ez6 tnJWjtUaUcogVyfnt6gQ5xxR24e1jQMdtpoexyS3FnjlSSxoJTv1tfE4E DEBbkpiOL/yCKt4EOpLx+e4KGypCWWNU5qSNK/CnstCbWbkhyQSi460jR g==; X-CSE-ConnectionGUID: BBsV0ENwQYGtnxbV1956HQ== X-CSE-MsgGUID: 9dcFxjz3QoGqFkGqm5nPlw== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="74456159" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="74456159" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:05 -0700 X-CSE-ConnectionGUID: 0c6tXsbPTFWJy3QS4RAtCQ== X-CSE-MsgGUID: Cj7h1WmARQqc+04u/NdEDg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="223119641" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa006.jf.intel.com with ESMTP; 23 Mar 2026 08:01:01 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 251569B; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 2/6] initramfs_test: test header fields with 0x hex prefix Date: Mon, 23 Mar 2026 15:54:18 +0100 Message-ID: <20260323150054.3587083-3-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Disseldorp cpio header fields are 8-byte hex strings, but one "interesting" side-effect of our historic simple_str[n]toul() use means that a "0x" (or "0X") prefixed header field will be successfully processed when coupled alongside a 6-byte hex remainder string. "0x" prefix support is contrary to the initramfs specification at Documentation/driver-api/early-userspace/buffer-format.rst which states: The structure of the cpio_header is as follows (all fields contain hexadecimal ASCII numbers fully padded with '0' on the left to the full width of the field, for example, the integer 4780 is represented by the ASCII string "000012ac"): Test for this corner case by injecting "0x" prefixes into the uid, gid and namesize cpio header fields. Confirm that init_stat() returns matching uid and gid values. This test can be modified in future to expect unpack_to_rootfs() failure when header validation is changed to properly follow the specification. Signed-off-by: David Disseldorp Signed-off-by: Andy Shevchenko --- init/initramfs_test.c | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/init/initramfs_test.c b/init/initramfs_test.c index 7b6ecab794c7..4d9a4075476c 100644 --- a/init/initramfs_test.c +++ b/init/initramfs_test.c @@ -495,6 +495,65 @@ static void __init initramfs_test_fname_path_max(struc= t kunit *test) kfree(tbufs); } =20 +static void __init initramfs_test_hdr_hex(struct kunit *test) +{ + char *err, *fmt; + size_t len; + struct kstat st0, st1; + char fdata[] =3D "this file data will be unpacked"; + struct initramfs_test_bufs { + char cpio_src[(CPIO_HDRLEN + PATH_MAX + 3 + sizeof(fdata)) * 2]; + } *tbufs =3D kzalloc(sizeof(struct initramfs_test_bufs), GFP_KERNEL); + struct initramfs_test_cpio c[] =3D { { + .magic =3D "070701", + .ino =3D 1, + .mode =3D S_IFREG | 0777, + .uid =3D 0x123456, + .gid =3D 0x123457, + .nlink =3D 1, + .namesize =3D sizeof("initramfs_test_hdr_hex_0"), + .fname =3D "initramfs_test_hdr_hex_0", + .filesize =3D sizeof(fdata), + .data =3D fdata, + }, { + .magic =3D "070701", + .ino =3D 2, + .mode =3D S_IFDIR | 0777, + .uid =3D 0x000056, + .gid =3D 0x000057, + .nlink =3D 1, + .namesize =3D sizeof("initramfs_test_hdr_hex_1"), + .fname =3D "initramfs_test_hdr_hex_1", + } }; + /* + * override CPIO_HDR_FMT and instead use a format string which places + * "0x" prefixes on the uid, gid and namesize values. + * parse_header()/simple_str[n]toul() accept this. + */ + fmt =3D "%s%08x%08x0x%06x0X%06x%08x%08x%08x%08x%08x%08x%08x0x%06x%08x%s"; + len =3D fill_cpio(c, ARRAY_SIZE(c), fmt, tbufs->cpio_src); + + err =3D unpack_to_rootfs(tbufs->cpio_src, len); + KUNIT_EXPECT_NULL(test, err); + + KUNIT_EXPECT_EQ(test, init_stat(c[0].fname, &st0, 0), 0); + KUNIT_EXPECT_EQ(test, init_stat(c[1].fname, &st1, 0), 0); + + KUNIT_EXPECT_TRUE(test, + uid_eq(st0.uid, make_kuid(current_user_ns(), (uid_t)0x123456))); + KUNIT_EXPECT_TRUE(test, + gid_eq(st0.gid, make_kgid(current_user_ns(), (gid_t)0x123457))); + KUNIT_EXPECT_TRUE(test, + uid_eq(st1.uid, make_kuid(current_user_ns(), (uid_t)0x56))); + KUNIT_EXPECT_TRUE(test, + gid_eq(st1.gid, make_kgid(current_user_ns(), (gid_t)0x57))); + + KUNIT_EXPECT_EQ(test, init_unlink(c[0].fname), 0); + KUNIT_EXPECT_EQ(test, init_rmdir(c[1].fname), 0); + + kfree(tbufs); +} + /* * The kunit_case/_suite struct cannot be marked as __initdata as this wil= l be * used in debugfs to retrieve results after test has run. @@ -508,6 +567,7 @@ static struct kunit_case __refdata initramfs_test_cases= [] =3D { KUNIT_CASE(initramfs_test_many), KUNIT_CASE(initramfs_test_fname_pad), KUNIT_CASE(initramfs_test_fname_path_max), + KUNIT_CASE(initramfs_test_hdr_hex), {}, }; =20 --=20 2.50.1 From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (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 0277F17A305; Mon, 23 Mar 2026 15:01:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278068; cv=none; b=JnA+YjGgfTq5IKVg3q2fRs4tX4uarIDvvMrlx/ibYOEPHfYnduaK+7LI9c9KVFl0OMQzTou7+iz5caZch6hbsXWBoRZnO4lAUWvp0ss3ZoadHVr4/bQh0+W9MCh2vP8x1Zi9vo2Y/mhxp68LGoyc6K7t9wJ/2r1OYRPy9V3ir5c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278068; c=relaxed/simple; bh=ou+cU83U8/W6PgBVFetgeP0Uw4wTgrkjzttLmTEJosE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pm24uWqP2VfDGCKvgDr2LnvGCWmeQ4WAAhhkHni99bZe4d2Rtlos/K8ffDi3y2Ovw5jfZcqER0b33CsuvhBVg/cfLDyezE8neDsc/gGtXc5G1RopkESGIejrc1cBAqvLWICrzEDpBksN0DCkpg2ToyQfCebh1vFgK5nYJoVRyFo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=GiafMzl9; arc=none smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="GiafMzl9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278066; x=1805814066; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ou+cU83U8/W6PgBVFetgeP0Uw4wTgrkjzttLmTEJosE=; b=GiafMzl9WzIjMyU5RiTtm6/NAbzzavil3PsWWIGL4v++aRHWEBbfHe9Q kli6kwkO6byP7cpxjaZ9if7QiYf8Kp6/mfrEhYmiQkmMt92Pt2PYBZ7ds tcVTL80ZrJYxrkOTDb3gptbM+JYfaUH1MC+w2Y3zTdTeyD/vosBvXSlA8 z7G+o4j/Vnjweveb1p3Mor3KO7qOa/Yp8kRzCa2vVUkf56M6cgO/FL/bb fgkY2qtCk77ODBwxZZ9DVfsUlBGxSqnfjqFDHuywWfnSFnj7HF+7pvm4N h+u3ZYaRnUksDlZv73p3CoRhmznNRrv8sqVFWkdNWTYBUIWJphhkcd1Bg g==; X-CSE-ConnectionGUID: bxDTvECUQXGjFcmJKvQWbA== X-CSE-MsgGUID: qREGY1zUT4mAzsZf9vbqWQ== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="74456127" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="74456127" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:04 -0700 X-CSE-ConnectionGUID: bB0zWNmSSpStjxud4fY0hQ== X-CSE-MsgGUID: pzTQQGxdR+OrumkDhfhCRA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="223119639" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa006.jf.intel.com with ESMTP; 23 Mar 2026 08:01:01 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 29BEE9D; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 3/6] initramfs: Sort headers alphabetically Date: Mon, 23 Mar 2026 15:54:19 +0100 Message-ID: <20260323150054.3587083-4-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Sorting headers alphabetically helps locating duplicates, and makes it easier to figure out where to insert new headers. Signed-off-by: Andy Shevchenko --- init/initramfs.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/init/initramfs.c b/init/initramfs.c index 139baed06589..4ed796566cf3 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -1,25 +1,25 @@ // SPDX-License-Identifier: GPL-2.0 -#include #include -#include -#include -#include -#include -#include #include -#include #include -#include -#include +#include +#include #include +#include +#include +#include #include #include #include #include -#include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include =20 #include "do_mounts.h" #include "initramfs_internal.h" --=20 2.50.1 From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (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 F339F35959; Mon, 23 Mar 2026 15:01:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278068; cv=none; b=Ixm9fgZS38swdBVlh0bq2NVNpJKJ80DhCI/gzkAlODAg0UUM4hOqQvwNXlVyYUc/3TY0yHQSUD0+7m8/AQbiBMRURETlSqGbYHz+XHhh+PAaPqFDUZYFrwGqRqmxxRLYeHq37h7ZcoPmhDuNevrdUaesXpNyUExXHSpp35sChhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278068; c=relaxed/simple; bh=rIaDlvHNA/jbeovQPA5Bk/hHAnp9WuI3nYIGC86eYSU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EpOGvNwf5ZZhbhkwJ15pMlkyzg+0rFFQRZr6PU7bLJJcsKot9QDzui6rAEAW7bFzyQDB4ln5dq6DtoGEbFA2W4f3mboM495pikV7rRDyFjdb6PqnviEOLmX3Kn83B+wusXlBv1abogKJLTeDNTZAROU8jpLzbRaRSRxccpJq8Is= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YtpIm3Sg; arc=none smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YtpIm3Sg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278067; x=1805814067; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rIaDlvHNA/jbeovQPA5Bk/hHAnp9WuI3nYIGC86eYSU=; b=YtpIm3SgKFw4RBq7VQYMIK0QZNJRiSssaDVKGDdzWsMkZY1t253ZwYuj RkRVGeKd5xzDOTEseOp5sgok+Y+kg52huyh1m4Be9sfi95fHZVIRnJVjb IlVWLvSI0bMKRn9c9pObeZx0N2fG7Ye3eMADEFi2HQC/rsiBx234C3AQp kqPJVeMANT59oCD/Ok1AcA/5IWNXo0bDV1X2iotA4vNB74dTI6Mnnjd5w gDMMqCvJlG5dXNTisofapS1bvFD9yIB9jZ1ATVy0Lsj/Iz0PV4/kmqRxM VYghgcC0ZegXyL/RaJKa4xnjOXRGl7OlMexlfnGk1Jg7w0Q8oIvuHrJhQ g==; X-CSE-ConnectionGUID: A+xYVd11SdCgZNwdIcQM1w== X-CSE-MsgGUID: RW0QX3QOTLywm6ORaKjrJA== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="74456147" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="74456147" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:05 -0700 X-CSE-ConnectionGUID: 9AhVUAzcRBm5OAVEMXsdMw== X-CSE-MsgGUID: rD1PVj0eR82mSgc07wKcXQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="223119638" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa006.jf.intel.com with ESMTP; 23 Mar 2026 08:01:01 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 2DCAB9E; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 4/6] initramfs: Refactor to use hex2bin() instead of custom approach Date: Mon, 23 Mar 2026 15:54:20 +0100 Message-ID: <20260323150054.3587083-5-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There is a simple_strntoul() function used solely as a shortcut for hex2bin() with proper endianess conversions. Replace that and drop the unneeded function in the next changes. This implementation will abort if we fail to parse the cpio header, instead of using potentially bogus header values. Co-developed-by: David Disseldorp Signed-off-by: David Disseldorp Signed-off-by: Andy Shevchenko --- init/initramfs.c | 44 +++++++++++++++++++++++++------------------ init/initramfs_test.c | 23 ++++------------------ 2 files changed, 30 insertions(+), 37 deletions(-) diff --git a/init/initramfs.c b/init/initramfs.c index 4ed796566cf3..0d38ea8e63a2 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,8 @@ #include #include =20 +#include + #include "do_mounts.h" #include "initramfs_internal.h" =20 @@ -190,26 +193,30 @@ static __initdata gid_t gid; static __initdata unsigned rdev; static __initdata u32 hdr_csum; =20 -static void __init parse_header(char *s) +static int __init parse_header(char *s) { - unsigned long parsed[13]; - int i; + __be32 header[13]; + int ret; =20 - for (i =3D 0, s +=3D 6; i < 13; i++, s +=3D 8) - parsed[i] =3D simple_strntoul(s, NULL, 16, 8); + ret =3D hex2bin((u8 *)header, s + 6, sizeof(header)); + if (ret) { + error("damaged header"); + return ret; + } =20 - ino =3D parsed[0]; - mode =3D parsed[1]; - uid =3D parsed[2]; - gid =3D parsed[3]; - nlink =3D parsed[4]; - mtime =3D parsed[5]; /* breaks in y2106 */ - body_len =3D parsed[6]; - major =3D parsed[7]; - minor =3D parsed[8]; - rdev =3D new_encode_dev(MKDEV(parsed[9], parsed[10])); - name_len =3D parsed[11]; - hdr_csum =3D parsed[12]; + ino =3D be32_to_cpu(header[0]); + mode =3D be32_to_cpu(header[1]); + uid =3D be32_to_cpu(header[2]); + gid =3D be32_to_cpu(header[3]); + nlink =3D be32_to_cpu(header[4]); + mtime =3D be32_to_cpu(header[5]); /* breaks in y2106 */ + body_len =3D be32_to_cpu(header[6]); + major =3D be32_to_cpu(header[7]); + minor =3D be32_to_cpu(header[8]); + rdev =3D new_encode_dev(MKDEV(be32_to_cpu(header[9]), be32_to_cpu(header[= 10]))); + name_len =3D be32_to_cpu(header[11]); + hdr_csum =3D be32_to_cpu(header[12]); + return 0; } =20 /* FSM */ @@ -289,7 +296,8 @@ static int __init do_header(void) error("no cpio magic"); return 1; } - parse_header(collected); + if (parse_header(collected)) + return 1; next_header =3D this_header + N_ALIGN(name_len) + body_len; next_header =3D (next_header + 3) & ~3; state =3D SkipIt; diff --git a/init/initramfs_test.c b/init/initramfs_test.c index 4d9a4075476c..df484f9d9c1b 100644 --- a/init/initramfs_test.c +++ b/init/initramfs_test.c @@ -499,8 +499,7 @@ static void __init initramfs_test_hdr_hex(struct kunit = *test) { char *err, *fmt; size_t len; - struct kstat st0, st1; - char fdata[] =3D "this file data will be unpacked"; + char fdata[] =3D "this file data will not be unpacked"; struct initramfs_test_bufs { char cpio_src[(CPIO_HDRLEN + PATH_MAX + 3 + sizeof(fdata)) * 2]; } *tbufs =3D kzalloc(sizeof(struct initramfs_test_bufs), GFP_KERNEL); @@ -528,28 +527,14 @@ static void __init initramfs_test_hdr_hex(struct kuni= t *test) /* * override CPIO_HDR_FMT and instead use a format string which places * "0x" prefixes on the uid, gid and namesize values. - * parse_header()/simple_str[n]toul() accept this. + * parse_header()/simple_str[n]toul() accepted this, contrary to the + * initramfs specification. hex2bin() now fails. */ fmt =3D "%s%08x%08x0x%06x0X%06x%08x%08x%08x%08x%08x%08x%08x0x%06x%08x%s"; len =3D fill_cpio(c, ARRAY_SIZE(c), fmt, tbufs->cpio_src); =20 err =3D unpack_to_rootfs(tbufs->cpio_src, len); - KUNIT_EXPECT_NULL(test, err); - - KUNIT_EXPECT_EQ(test, init_stat(c[0].fname, &st0, 0), 0); - KUNIT_EXPECT_EQ(test, init_stat(c[1].fname, &st1, 0), 0); - - KUNIT_EXPECT_TRUE(test, - uid_eq(st0.uid, make_kuid(current_user_ns(), (uid_t)0x123456))); - KUNIT_EXPECT_TRUE(test, - gid_eq(st0.gid, make_kgid(current_user_ns(), (gid_t)0x123457))); - KUNIT_EXPECT_TRUE(test, - uid_eq(st1.uid, make_kuid(current_user_ns(), (uid_t)0x56))); - KUNIT_EXPECT_TRUE(test, - gid_eq(st1.gid, make_kgid(current_user_ns(), (gid_t)0x57))); - - KUNIT_EXPECT_EQ(test, init_unlink(c[0].fname), 0); - KUNIT_EXPECT_EQ(test, init_rmdir(c[1].fname), 0); + KUNIT_EXPECT_NOT_NULL(test, err); =20 kfree(tbufs); } --=20 2.50.1 From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) (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 31EFE2550AF; Mon, 23 Mar 2026 15:01:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278070; cv=none; b=BQse7ybqsMBx/kQP1A1XIWmbPSwlYbprsDQv7VoD8IkrKZTbo3TSaNR8tzvkUBOFVpwQmRIQVWDN4L1ixnFlMVfFjX54aHhjFIRTpY4YJOvypriZ9ZA5hhuzrq7LRXmwPJ/DwHcy17G/sDKK3BfAnz2HJ1Dtzt/vzetT6PzzfSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278070; c=relaxed/simple; bh=FTuuK2lbsKxW1TqNcpwiwlVgmoiY1ioRmAfUVOmsQ34=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rM8Z7mGN/V8SVGeF/4lcdX97h+0HndqC4MPoU0KtPlKVYgMXeAm8Vsygg9dSWYVnmKHwxXCQVn7586Sa6uKJ67RGFaxAbm4uLCZFm1flglp5zeZJmIJuDl5l3++GZela3GNyn3iDjKrApPkOtbqgkdc2NdlVoWd2ou3LKh42Ofc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=iH/aJfSN; arc=none smtp.client-ip=198.175.65.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="iH/aJfSN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278069; x=1805814069; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FTuuK2lbsKxW1TqNcpwiwlVgmoiY1ioRmAfUVOmsQ34=; b=iH/aJfSNot0IXy+hwVDlxMP5gEt9K4lpDEjbU3vLXvSo/F3bYd07oLXQ MXe65v9VKya6R9mq5UIWWGP2aPaQq5zeUGQnxVpyc8aM6Obvo9fRr1GxG Xb2in7YYtdD+37Y27s/Ob7Dern4ZWCDFn2ahs+kXD4kLraA6jzMJVaT9R P+XeGjRNmSVem+xICHo3f4mmfawL/ZSxnvqRpU+7yIsPl9cPAczJVe3Fy e+XjMKTIi2D5KSm5YaNa93Rofr/JohvZ5xLedaT5Uda8wep71sG9ml95z a1BpvC8Rr7iL507o16/KgqIRjSIWz2cA5ylL7KncBNLft9X5iFfFIzdzt w==; X-CSE-ConnectionGUID: 2/07i5ZCQLGNUtqZgvJZkQ== X-CSE-MsgGUID: f1OIRo6qScKgxRxuYogroQ== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="75249702" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="75249702" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:07 -0700 X-CSE-ConnectionGUID: n3VUCfneTTeMCr3UmBQMLQ== X-CSE-MsgGUID: nbS6rQXAQXyOOsEuTifHcQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="221212767" Received: from black.igk.intel.com ([10.91.253.5]) by fmviesa008.fm.intel.com with ESMTP; 23 Mar 2026 08:01:04 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 32967A1; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 5/6] vsprintf: Revert "add simple_strntoul" Date: Mon, 23 Mar 2026 15:54:21 +0100 Message-ID: <20260323150054.3587083-6-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" No users anymore and none should be in the first place. This reverts commit fcc155008a20fa31b01569e105250490750f0687. Signed-off-by: Andy Shevchenko --- include/linux/kstrtox.h | 1 - lib/vsprintf.c | 7 ------- 2 files changed, 8 deletions(-) diff --git a/include/linux/kstrtox.h b/include/linux/kstrtox.h index 6ea897222af1..7fcf29a4e0de 100644 --- a/include/linux/kstrtox.h +++ b/include/linux/kstrtox.h @@ -143,7 +143,6 @@ static inline int __must_check kstrtos32_from_user(cons= t char __user *s, size_t */ =20 extern unsigned long simple_strtoul(const char *,char **,unsigned int); -extern unsigned long simple_strntoul(const char *,char **,unsigned int,siz= e_t); extern long simple_strtol(const char *,char **,unsigned int); extern unsigned long long simple_strtoull(const char *,char **,unsigned in= t); extern long long simple_strtoll(const char *,char **,unsigned int); diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 800b8ac49f53..52ea14a08d3a 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -129,13 +129,6 @@ unsigned long simple_strtoul(const char *cp, char **en= dp, unsigned int base) } EXPORT_SYMBOL(simple_strtoul); =20 -unsigned long simple_strntoul(const char *cp, char **endp, unsigned int ba= se, - size_t max_chars) -{ - return simple_strntoull(cp, endp, base, max_chars); -} -EXPORT_SYMBOL(simple_strntoul); - /** * simple_strtol - convert a string to a signed long * @cp: The start of the string --=20 2.50.1 From nobody Mon Mar 23 19:50:51 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) (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 C61211A3029; Mon, 23 Mar 2026 15:01:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278069; cv=none; b=q5RS4i9qkE9Yja3aEGj2SSQR6/Vh5FdqpFIAgX4YD6JQUAl74APy/cWBobcEAqI110aWg6GlgK4Hb7GbcHTLEfY2fP+gN10tmY0+LhhZj6KpOL5LmgUJyAlcIlDKwPqFeixS25dhK51EJQHOPbfnOFiCNxOBqB1n76nS5yP2q9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278069; c=relaxed/simple; bh=VUhri3d7VyauDsHJzIbJLk+19FEXBT199psKUOzW3cI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MxI91rOEpKbCF7D6PH5p3Qif5eXGUQhNMdrLotrb1QCvAy85HnZsTGF42LkEjOGsMtUPyp1f2OgbSqX/DUJuPgbhfbo6p429Wkzzona1E/BlnQUv/nMK8dyI5dODvu3+/f6ltOV5i5UTadPBicnt4Ov2xGiAJixRtjsTX8swWn4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=cCFInWYL; arc=none smtp.client-ip=198.175.65.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="cCFInWYL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774278068; x=1805814068; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VUhri3d7VyauDsHJzIbJLk+19FEXBT199psKUOzW3cI=; b=cCFInWYLUSdp25HhiwsDRBn93YKtz7AOETXHyJgjEFwje9vsWRoCbwkZ Jc4Esr6QRxGDRxcWgRrHNMS2jg1hzOo73IqHK+4mERlN0U87fEuuaboYj e1jefEgMbwQlhAHfatCX/xWXGkKkyLz4CWapL6DMe/EGSbmlQiVVg3xjr UVHZZ8YBP4rUAR5eWrZzISOU764to3pIT669cxqKSpGlEDXHJkGp/NJXf p2mxp3XUi5eK1WkZxOnbWahyPdgqzsMXKfR6gcveGn7lGdpKjEXETohPU D2pArk267rYdnHJe2+st1qJHx7lutBZEA93YMU4f9QFFcYjLMMEVXyLFQ Q==; X-CSE-ConnectionGUID: UJGc2TifRzWfTm6DfPxlJg== X-CSE-MsgGUID: +8xdLSbXQ06aqO1mBjM8Vg== X-IronPort-AV: E=McAfee;i="6800,10657,11738"; a="75249714" X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="75249714" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2026 08:01:07 -0700 X-CSE-ConnectionGUID: W8d+PllLSGeNb+bAkRJxKQ== X-CSE-MsgGUID: Cg/WijqnT4K8wZH0XcGW2Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,137,1770624000"; d="scan'208";a="221212768" Received: from black.igk.intel.com ([10.91.253.5]) by fmviesa008.fm.intel.com with ESMTP; 23 Mar 2026 08:01:04 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id 37241A2; Mon, 23 Mar 2026 16:01:00 +0100 (CET) From: Andy Shevchenko To: Andy Shevchenko , David Disseldorp , Petr Mladek , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Al Viro , Christian Brauner , Jan Kara , Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton Subject: [PATCH v3 6/6] kstrtox: Drop extern keyword in the simple_strtox() declarations Date: Mon, 23 Mar 2026 15:54:22 +0100 Message-ID: <20260323150054.3587083-7-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> References: <20260323150054.3587083-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There is legacy 'extern' keyword for the exported simple_strtox() function which are the artefact that can be removed. So drop it. While at it, tweak the declaration to provide parameter names. Signed-off-by: Andy Shevchenko --- include/linux/kstrtox.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/linux/kstrtox.h b/include/linux/kstrtox.h index 7fcf29a4e0de..6c9282866770 100644 --- a/include/linux/kstrtox.h +++ b/include/linux/kstrtox.h @@ -142,9 +142,9 @@ static inline int __must_check kstrtos32_from_user(cons= t char __user *s, size_t * Keep in mind above caveat. */ =20 -extern unsigned long simple_strtoul(const char *,char **,unsigned int); -extern long simple_strtol(const char *,char **,unsigned int); -extern unsigned long long simple_strtoull(const char *,char **,unsigned in= t); -extern long long simple_strtoll(const char *,char **,unsigned int); +unsigned long simple_strtoul(const char *cp, char **endp, unsigned int bas= e); +long simple_strtol(const char *cp, char **endp, unsigned int base); +unsigned long long simple_strtoull(const char *cp, char **endp, unsigned i= nt base); +long long simple_strtoll(const char *cp, char **endp, unsigned int base); =20 #endif /* _LINUX_KSTRTOX_H */ --=20 2.50.1