From f31c2f4494779e5c5f170ad10539bfc2dfafe967 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sat, 24 Jun 2023 08:00:00 +0000 Subject: [PATCH] tests: update sockopt-sol_netlink test Update sockopt-sol_netlink test that started to fail, likely due to recent linux kernel commit f4e4534850a9 ("net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report"). * tests/sockopt-sol_netlink.c (main): Always print changing optlen value on exiting syscall. Reported-by: Alexander Gordeev --- tests/sockopt-sol_netlink.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) Upstream-Status: Backport diff --git a/tests/sockopt-sol_netlink.c b/tests/sockopt-sol_netlink.c index 82b98adc23..1c33219ac5 100644 --- a/tests/sockopt-sol_netlink.c +++ b/tests/sockopt-sol_netlink.c @@ -94,7 +94,10 @@ main(void) printf("%p", val); else printf("[%d]", *val); - printf(", [%d]) = %s\n", *len, errstr); + printf(", [%d", (int) sizeof(*val)); + if ((int) sizeof(*val) != *len) + printf(" => %d", *len); + printf("]) = %s\n", errstr); /* optlen larger than necessary - shortened */ *len = sizeof(*val) + 1; @@ -150,8 +153,12 @@ main(void) /* optval EFAULT - print address */ *len = sizeof(*val); get_sockopt(fd, names[i].val, efault, len); - printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d]) = %s\n", - fd, names[i].str, efault, *len, errstr); + printf("getsockopt(%d, SOL_NETLINK, %s, %p", + fd, names[i].str, efault); + printf(", [%d", (int) sizeof(*val)); + if ((int) sizeof(*val) != *len) + printf(" => %d", *len); + printf("]) = %s\n", errstr); /* optlen EFAULT - print address */ get_sockopt(fd, names[i].val, val, len + 1);