lib/tests/printf_kunit.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)
printf_kunit already covers IPv4 address formatting, but the ip6()
test case is empty even though printk-formats.rst documents %pI6,
%pi6, %pI6c, and generic %pIS variants.
Add focused IPv6 checks for raw and generic formatting, compressed
output, the single-zero %pI6c corner case, and bracketed port
formatting for sockaddr_in6.
Validated with the arm64 printf KUnit suite and a W=1 rebuild of
lib/tests/printf_kunit.o.
Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
---
lib/tests/printf_kunit.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/lib/tests/printf_kunit.c b/lib/tests/printf_kunit.c
index c64bfe79652e..739c755dd1ab 100644
--- a/lib/tests/printf_kunit.c
+++ b/lib/tests/printf_kunit.c
@@ -17,6 +17,7 @@
#include <linux/dcache.h>
#include <linux/socket.h>
#include <linux/in.h>
+#include <linux/in6.h>
#include <linux/gfp.h>
#include <linux/mm.h>
@@ -437,6 +438,27 @@ ip4(struct kunit *kunittest)
static void
ip6(struct kunit *kunittest)
{
+ const struct in6_addr addr = {
+ .s6_addr = { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
+ 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }
+ };
+ const struct in6_addr single_zero = {
+ .s6_addr = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04,
+ 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }
+ };
+ struct sockaddr_in6 sa = {
+ .sin6_family = AF_INET6,
+ .sin6_port = cpu_to_be16(12345),
+ .sin6_addr = addr,
+ };
+
+ test("00010002000300040005000600070008|0001:0002:0003:0004:0005:0006:0007:0008",
+ "%pi6|%pI6", &addr, &addr);
+ test("00010002000300040005000600070008|0001:0002:0003:0004:0005:0006:0007:0008",
+ "%piS|%pIS", &sa, &sa);
+ test("1:2:3:4:5:6:7:8", "%pI6c", &addr);
+ test("1:0:3:4:5:6:7:8", "%pI6c", &single_zero);
+ test("[1:2:3:4:5:6:7:8]:12345", "%pISpc", &sa);
}
static void
--
2.50.1 (Apple Git-155)
On Tue 2026-03-17 17:30:48, Shuvam Pandey wrote: > printf_kunit already covers IPv4 address formatting, but the ip6() > test case is empty even though printk-formats.rst documents %pI6, > %pi6, %pI6c, and generic %pIS variants. > > Add focused IPv6 checks for raw and generic formatting, compressed > output, the single-zero %pI6c corner case, and bracketed port > formatting for sockaddr_in6. > > Validated with the arm64 printf KUnit suite and a W=1 rebuild of > lib/tests/printf_kunit.o. > > Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com> JFYI, the patch has been comitted into printk/linux.git, branch for-7.1. Note that I have removed the last paragraph about validating as suggested by Andy, see https://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git/commit/?h=for-7.1&id=f4cf0992be37e6a8bc6cf9108f2c9628a6188381 Best Regards, Petr
On Tue, Mar 17, 2026 at 05:30:48PM +0545, Shuvam Pandey wrote: > printf_kunit already covers IPv4 address formatting, but the ip6() > test case is empty even though printk-formats.rst documents %pI6, > %pi6, %pI6c, and generic %pIS variants. > > Add focused IPv6 checks for raw and generic formatting, compressed > output, the single-zero %pI6c corner case, and bracketed port > formatting for sockaddr_in6. > Validated with the arm64 printf KUnit suite and a W=1 rebuild of > lib/tests/printf_kunit.o. No need to put this paragraph into the commit message, it's implied that the author of the change has validated and tested it beforehand. Otherwise, test cases are always warmly welcome! Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -- With Best Regards, Andy Shevchenko
© 2016 - 2026 Red Hat, Inc.