Re: [PATCH] selftests/vDSO: Fix undefined CLONE_NEWTIME by including

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Le 29/01/2025 à 19:17, Purva Yeshi a écrit :

On 27/01/25 13:32, Christophe Leroy wrote:


Le 26/01/2025 à 11:59, Purva Yeshi a écrit :
[Vous ne recevez pas souvent de courriers de purvayeshi550@xxxxxxxxx.
Découvrez pourquoi ceci est important à
https://aka.ms/LearnAboutSenderIdentification ]

Fix the build failure caused by the undefined `CLONE_NEWTIME`.
Include the `linux/sched.h` header file where the function is defined to
ensure successful compilation of the selftests.

This is supposed to be already fixed by commit 34d5b600172b ("selftests:
vDSO: Explicitly include sched.h")

Can you explain what is the exact problem still ? And why linux/sched.h ?

Yes, I noticed that sched.h is already included, but I still encountered
an "undeclared CLONE_NEWTIME" error during compilation.

Must be that your sched.h is not up-to-date I guess. On my side I have:

/usr/include/linux/sched.h:#define CLONE_NEWTIME 0x00000080 /* New time namespace */ /usr/include/bits/sched.h:#define CLONE_NEWTIME 0x00000080 /* New time namespace */

And

/usr/include/sched.h:#include <bits/sched.h>



Error I got:
CC       vdso_test_getrandom
vdso_test_getrandom.c: In function ‘kselftest’:
vdso_test_getrandom.c:257:29: error: ‘CLONE_NEWTIME’ undeclared (first
use in this function); did you mean ‘CLONE_NEWPID’?
   257 |         ksft_assert(unshare(CLONE_NEWTIME) == 0);
       |                             ^~~~~
vdso_test_getrandom.c:47:20: note: in definition of macro ‘ksft_assert’
    47 |         do { if (!(condition)) ksft_exit_fail_msg("Assertion
failed: %s\n", #condition); } while (0)
       |                    ^~~~~
vdso_test_getrandom.c:257:29: note: each undeclared identifier is
reported only once for each function it appears in
   257 |         ksft_assert(unshare(CLONE_NEWTIME) == 0);
       |                             ^~~~~
vdso_test_getrandom.c:47:20: note: in definition of macro ‘ksft_assert’
    47 |         do { if (!(condition)) ksft_exit_fail_msg("Assertion
failed: %s\n", #condition); } while (0)
       |                    ^~~~~
make[1]: * [../lib.mk:222:
/home/purva/linux/tools/testing/selftests/vDSO/vdso_test_getrandom] Error 1
make[1]: Leaving directory '/home/purva/linux/tools/testing/selftests/vDSO'

I found that CLONE_NEWTIME is declared in both sched.h and
linux/sched.h. Since sched.h was already included, it was surprising
that the error persisted. Adding linux/sched.h as a header resolved the
issue, and the selftests compiled successfully after that.

Can you recheck that the sched.h that contains CLONE_NEWTIME is really the one used by your compiler ?



Did you properly build kernel headers before building selftests ?

Yes, I ensured that I properly built the kernel headers before building
the selftests by following the documentation provided here


At the end we should probably wonder if we want selftests to build with old libc's that do not include latest defines. If we want to, then you should probably replace sched.h by linux/sched.h . I'm not sure about what to do really.




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux