blob: a0843836c217082f690c3e08780612879cd8e1c9 [file] [log] [blame]
From f31c2f4494779e5c5f170ad10539bfc2dfafe967 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@strace.io>
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 <agordeev@linux.ibm.com>
---
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);