Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3334644rwd; Mon, 22 May 2023 12:06:05 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6b9Rh9mbNo83UeVLE1MYU2L2uL5614yHjRG2OznvjwlMy8ak9K2p6uEDlVREn6CcjIlK6q X-Received: by 2002:a05:6a00:22c3:b0:63b:64f7:45a0 with SMTP id f3-20020a056a0022c300b0063b64f745a0mr16890268pfj.12.1684782365372; Mon, 22 May 2023 12:06:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684782365; cv=none; d=google.com; s=arc-20160816; b=TAqSx7slawvbEqVmovoHs7T3n6ddrO+fdk5SHbFLq7VKGCni9E2r/zXEvP+FjtPVWu 5EvhexR6cM2n3y9umKCOyDA2+cCRaR2pSoxM7NHhqfUStuIXwkh1Pr12Ys3hwoRapopG /7bck4mr77q/E6h0/tePKD8TgYP6xgjL/aZKqv4vRW1Y+CaSCKxWGa17fILlKmHni7uS hsjrjkT+HuKClFdwGkBxI+mTWB+1gxxEiqcOBkfpN3yYq8MLgsrXEw8f2Qo2EJ0XCSlM R9jlSidjgcvDSUwr6fLo+5nvopyHWTfWKGv0N0Aho2et2opGDerY0MrD8cKTb5SF68K0 jYEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TN+AgCP/bHW488bJILVSuMyzFoXkjUpCxtNqMftfP0c=; b=WwrMqXGx+KxkAU1nl0KxyADUhIXpurhiiz3t7LRgwlc8ikEN/Yz65dMch3U2odzpJV Qo/5KTQQBUWc7OziuOBnEPi8iQUeNd2Olns9zmM2aYLeGNwy9CblmDJ8BgbAX5KAqhqj sTGa+ft+eDVOps9DqnLR52uI7zhN50OW2qGA9ty/GeViPEzWSBdsDGa+arUzC88ire7I D4/eFzu5cuIJBKz80bYGkHfj6vO8PqEDso/1zQU00dj6dTx4e+FLJbBzLf8U2m4A7AI+ r9/vl0vQ7YubcPp5kjwXETc205XRL9Kl46Nmlo5m3oQN61cwQRLuCr1LFjlbxOKcYQRm CkKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=tniRZjYJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b3-20020aa79503000000b0064f3b3cfb43si80453pfp.161.2023.05.22.12.05.50; Mon, 22 May 2023 12:06:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=tniRZjYJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233553AbjEVS0t (ORCPT + 99 others); Mon, 22 May 2023 14:26:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230284AbjEVS0s (ORCPT ); Mon, 22 May 2023 14:26:48 -0400 Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com [207.171.184.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FE03FF; Mon, 22 May 2023 11:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1684780007; x=1716316007; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TN+AgCP/bHW488bJILVSuMyzFoXkjUpCxtNqMftfP0c=; b=tniRZjYJfniXVVnsddiWobQWt6DW+8MimAQA2SI3//3FkEZW46I8MaMR UPLkMlAe7XrozM87fEyuYA2G9SlxBbIxA2TkjnnrIpDSiZ95NIoACzXEj KmdGfXzhNX/ecmKfJyjUuOpW9G3vQPK3okfrREb8MYFb0pI4VfWyJ3KwL U=; X-IronPort-AV: E=Sophos;i="6.00,184,1681171200"; d="scan'208";a="340639418" Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com) ([10.25.36.210]) by smtp-border-fw-9102.sea19.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2023 18:26:39 +0000 Received: from EX19MTAUWB002.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com (Postfix) with ESMTPS id 9DFFE80C72; Mon, 22 May 2023 18:26:35 +0000 (UTC) Received: from EX19D004ANA001.ant.amazon.com (10.37.240.138) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Mon, 22 May 2023 18:26:34 +0000 Received: from 88665a182662.ant.amazon.com.com (10.119.123.82) by EX19D004ANA001.ant.amazon.com (10.37.240.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Mon, 22 May 2023 18:26:32 +0000 From: Kuniyuki Iwashima To: CC: , , , , , , , , Subject: Re: [BUG] selftests: af_unix: unix:diag.c does not compile on AlmaLinux 8.7 Date: Mon, 22 May 2023 11:26:23 -0700 Message-ID: <20230522182623.67385-1-kuniyu@amazon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.119.123.82] X-ClientProxiedBy: EX19D046UWA001.ant.amazon.com (10.13.139.112) To EX19D004ANA001.ant.amazon.com (10.37.240.138) X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, T_SPF_PERMERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mirsad Goran Todorovac Date: Mon, 22 May 2023 20:01:14 +0200 > On 5/22/23 18:28, Kuniyuki Iwashima wrote: > > From: Mirsad Todorovac > > Date: Mon, 22 May 2023 17:32:11 +0200 > >> 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 : > >> > >> 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 > >> ^~~~~~~~~~~~~~ > >> 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?) > > > > I launched AlmaLinux/RockyLinux 8.7 and 9.2 with images listed in the pages > > below. > > > > https://wiki.almalinux.org/cloud/AWS.html#community-amis > > https://rockylinux.org/cloud-images/ > > > > The kernel versions in each image were : > > > > 8.7: > > Alma : 4.18.0-425.3.1.el8.x86_64 > > Rocky : 4.18.0-425.10.1.el8_7.x86_64 > > > > 9.2: > > Alma : 5.14.0-284.11.1.el9_2.x86_64 > > Rocky : 5.14.0-284.11.1.el9_2.x86_64 > > > > So, this is not a bug. It's just because v4.18 does not support > > UNIX_DIAG_UID, which was introduced in v5.3. > > > > You should install 5.3+ kernel if you want to build the test. > > > > Thanks, > > Kuniyuki > > Hi, Kuniyuki, > > Good point. However, newer kernel won't save me from old /usr/include > headers, will it? Sorry, I meant kernel and kernel-headers package that should be updated along with kernel. You should use proper header files that match to the actual kernel version running on the machine. > I was actually testing the 6.4-rc3 on AlmaLinux 8.7, as it is my only > RHEL-based box ... > > What would then be the right action? make headers_install ? > If it was a #define instead of enum, I'd probably work around and > exclude the test that doesn't fit the kernel, or the system call > would return -EINVAL? > > Including from the includes that came with the kernel might be > a solution: > > ../../../../../include/uapi/linux/unix_diag.h:44: UNIX_DIAG_UID, > > Alas, when I try to include, I get these ugly errors: > > [marvin@pc-mtodorov af_unix]$ gcc -I ../../../../../include/ diag_uid.c > 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 > ^~~~~~~~~~~~~~ FWIW, this is provided by kernel-devel package. > compilation terminated. > [marvin@pc-mtodorov af_unix]$ vi +246 > ../../../../../include/linux/compiler.h > [marvin@pc-mtodorov af_unix]$ find ../../../../../include -name rwonce.h > ../../../../../include/asm-generic/rwonce.h > [marvin@pc-mtodorov af_unix]$ > > Minimum reproducer is: > > [marvin@pc-mtodorov af_unix]$ gcc -I ../../../../../include/ reproducer.c > 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 reproducer.c:5: > ../../../../../include/linux/compiler.h:246:10: fatal error: > asm/rwonce.h: No such file or directory > #include > ^~~~~~~~~~~~~~ > compilation terminated. > [marvin@pc-mtodorov af_unix]$ > > [marvin@pc-mtodorov af_unix]$ nl reproducer.c > > 1 #define _GNU_SOURCE > 2 #include > > [marvin@pc-mtodorov af_unix]$ > > Am I doing something very stupid right now, for actually I see > > #include > > in "include/linux/compiler.h" 248L, 7843C > > while actual rwonce.h is in > > [marvin@pc-mtodorov af_unix]$ find ../../../../../include -name rwonce.h > ../../../../../include/asm-generic/rwonce.h > [marvin@pc-mtodorov af_unix]$ > > I must be doing something wrong, for I see that the kernel compiled > despite not having include/asm ? > > When looking at the invocations of rwonce.h in the kernel, they seem to > be equally spread between and : > > [marvin@pc-mtodorov af_unix]$ grep --include="*.[ch]" -n -w rwonce.h -r ../../../../.. 2> /dev/null | less > ../../../../../arch/alpha/include/asm/rwonce.h:33:#include > ../../../../../arch/arm64/include/asm/rwonce.h:71:#include > ../../../../../arch/arm64/kvm/hyp/include/nvhe/spinlock.h:18:#include > ../../../../../arch/s390/include/asm/rwonce.h:29:#include > ../../../../../arch/x86/include/generated/asm/rwonce.h:1:#include > ../../../../../include/asm-generic/barrier.h:18:#include > ../../../../../include/kunit/test.h:29:#include > ../../../../../include/linux/compiler.h:246:#include > > I figured out I must be doing something wrong or the kernel otherwise > would not build for me. > > Eventually, the UNIX_DIAG_UID enum is used in only one place: > > ASSERT_EQ(attr->rta_type, UNIX_DIAG_UID); > > That particular test should fail in case of kernel older than 5.3. We don't expect it to be run on older kernels in the first place. > > However, I fell into a terrible mess where one thing breaks the other. > > I can't seem to make this work. > > Thanks, > Mirsad