lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <edac34c9-190c-0d80-8d95-2f42971cc870@alu.unizg.hr>
Date:   Mon, 22 May 2023 17:32:11 +0200
From:   Mirsad Todorovac <mirsad.todorovac@....unizg.hr>
To:     linux-kselftest@...r.kernel.org
Cc:     "David S. Miller" <davem@...emloft.net>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>, Shuah Khan <shuah@...nel.org>,
        Kuniyuki Iwashima <kuniyu@...zon.com>, netdev@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: [BUG] selftests: af_unix: unix:diag.c does not compile on AlmaLinux
 8.7

Hi,

On vanilla AlmaLinux 8.7 (CentOS fork) selftests/net/af_unix/diag_uid.c doesn't
compile out of the box, giving the errors:

make[2]: Entering directory '/home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix'
gcc     diag_uid.c  -o /home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix/diag_uid
diag_uid.c:36:16: error: ‘UDIAG_SHOW_UID’ undeclared here (not in a function); did you mean ‘UDIAG_SHOW_VFS’?
   .udiag_show = UDIAG_SHOW_UID
                 ^~~~~~~~~~~~~~
                 UDIAG_SHOW_VFS
In file included from diag_uid.c:17:
diag_uid.c: In function ‘render_response’:
diag_uid.c:128:28: error: ‘UNIX_DIAG_UID’ undeclared (first use in this function); did you mean ‘UNIX_DIAG_VFS’?
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
                             ^~~~~~~~~~~~~
../../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’
   __typeof__(_seen) __seen = (_seen); \
              ^~~~~
diag_uid.c:128:2: note: in expansion of macro ‘ASSERT_EQ’
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
   ^~~~~~~~~
diag_uid.c:128:28: note: each undeclared identifier is reported only once for each function it appears in
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
                             ^~~~~~~~~~~~~
../../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’
   __typeof__(_seen) __seen = (_seen); \
              ^~~~~
diag_uid.c:128:2: note: in expansion of macro ‘ASSERT_EQ’
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
   ^~~~~~~~~
make[2]: *** [../../lib.mk:147: /home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix/diag_uid] Error 1

The correct value is in <uapi/linux/unix_diag.h>:

include/uapi/linux/unix_diag.h:23:#define UDIAG_SHOW_UID		0x00000040	/* show socket's UID */

The fix is as follows:

---
  tools/testing/selftests/net/af_unix/diag_uid.c | 4 ++++
  1 file changed, 4 insertions(+)

diff --git a/tools/testing/selftests/net/af_unix/diag_uid.c b/tools/testing/selftests/net/af_unix/diag_uid.c
index 5b88f7129fea..66d75b646d35 100644
--- a/tools/testing/selftests/net/af_unix/diag_uid.c
+++ b/tools/testing/selftests/net/af_unix/diag_uid.c
@@ -16,6 +16,10 @@

  #include "../../kselftest_harness.h"

+#ifndef UDIAG_SHOW_UID
+#define UDIAG_SHOW_UID         0x00000040      /* show socket's UID */
+#endif
+
  FIXTURE(diag_uid)
  {
         int netlink_fd;

--

However, this patch reveals another undefined value:

make[2]: Entering directory '/home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix'
gcc     diag_uid.c  -o /home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix/diag_uid
In file included from diag_uid.c:17:
diag_uid.c: In function ‘render_response’:
diag_uid.c:132:28: error: ‘UNIX_DIAG_UID’ undeclared (first use in this function); did you mean ‘UNIX_DIAG_VFS’?
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
                             ^~~~~~~~~~~~~
../../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’
   __typeof__(_seen) __seen = (_seen); \
              ^~~~~
diag_uid.c:132:2: note: in expansion of macro ‘ASSERT_EQ’
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
   ^~~~~~~~~
diag_uid.c:132:28: note: each undeclared identifier is reported only once for each function it appears in
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
                             ^~~~~~~~~~~~~
../../kselftest_harness.h:707:13: note: in definition of macro ‘__EXPECT’
   __typeof__(_seen) __seen = (_seen); \
              ^~~~~
diag_uid.c:132:2: note: in expansion of macro ‘ASSERT_EQ’
   ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID);
   ^~~~~~~~~
make[2]: *** [../../lib.mk:147: /home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix/diag_uid] Error 1

Apparently, AlmaLinux 8.7 lacks this enum UNIX_DIAG_UID:

diff -u /usr/include/linux/unix_diag.h include/uapi/linux/unix_diag.h
--- /usr/include/linux/unix_diag.h	2023-05-16 13:47:51.000000000 +0200
+++ include/uapi/linux/unix_diag.h	2022-10-12 07:35:58.253481367 +0200
@@ -20,6 +20,7 @@
  #define UDIAG_SHOW_ICONS	0x00000008	/* show pending connections */
  #define UDIAG_SHOW_RQLEN	0x00000010	/* show skb receive queue len */
  #define UDIAG_SHOW_MEMINFO	0x00000020	/* show memory info of a socket */
+#define UDIAG_SHOW_UID		0x00000040	/* show socket's UID */

  struct unix_diag_msg {
  	__u8	udiag_family;
@@ -40,6 +41,7 @@
  	UNIX_DIAG_RQLEN,
  	UNIX_DIAG_MEMINFO,
  	UNIX_DIAG_SHUTDOWN,
+	UNIX_DIAG_UID,

  	__UNIX_DIAG_MAX,
  };

Now, this is a change in enums and there doesn't seem to an easy way out
here. (I think I saw an example, but I cannot recall which thread. I will do
more research.)

When I included

# gcc -I ../../../../include diag_uid.c

I've got the following error:

[marvin@...mtodorov linux_torvalds]$ cd tools/testing/selftests/net/af_unix/
[marvin@...mtodorov af_unix]$ gcc  -I ../../../../../include   diag_uid.c  -o 
/home/marvin/linux/kernel/linux_torvalds/tools/testing/selftests/net/af_unix/diag_uid
In file included from ../../../../../include/linux/build_bug.h:5,
                  from ../../../../../include/linux/bits.h:21,
                  from ../../../../../include/linux/capability.h:18,
                  from ../../../../../include/linux/netlink.h:6,
                  from diag_uid.c:8:
../../../../../include/linux/compiler.h:246:10: fatal error: asm/rwonce.h: No such file or directory
  #include <asm/rwonce.h>
           ^~~~~~~~~~~~~~
compilation terminated.
[marvin@...mtodorov af_unix]$

At this point I gave up, as it would be an overkill to change kernel system
header to make a test pass, and this probably wouldn't be accepted upsteam?

Hope this helps. (If we still want to build on CentOS/AlmaLinux/Rocky 8?)

Best regards,
Mirsad

-- 
Mirsad Goran Todorovac
Sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu

System engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ