All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mirsad Todorovac <mirsad.todorovac@alu.unizg.hr>
To: linux-kselftest@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Shuah Khan <shuah@kernel.org>,
	Kuniyuki Iwashima <kuniyu@amazon.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [BUG] selftests: af_unix: unix:diag.c does not compile on AlmaLinux 8.7
Date: Mon, 22 May 2023 17:32:11 +0200	[thread overview]
Message-ID: <edac34c9-190c-0d80-8d95-2f42971cc870@alu.unizg.hr> (raw)

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@pc-mtodorov linux_torvalds]$ cd tools/testing/selftests/net/af_unix/
[marvin@pc-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@pc-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

             reply	other threads:[~2023-05-22 15:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-22 15:32 Mirsad Todorovac [this message]
2023-05-22 16:28 ` [BUG] selftests: af_unix: unix:diag.c does not compile on AlmaLinux 8.7 Kuniyuki Iwashima
2023-05-22 18:01   ` Mirsad Goran Todorovac
2023-05-22 18:26     ` Kuniyuki Iwashima
2023-05-24 14:15       ` Mirsad Todorovac

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=edac34c9-190c-0d80-8d95-2f42971cc870@alu.unizg.hr \
    --to=mirsad.todorovac@alu.unizg.hr \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=kuniyu@amazon.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=shuah@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.