Re: [PATCH bpf-next 3/3] selftests/bpf: Check __ARCH_WANT_SET_GET_RLIMIT before syscall(__NR_getrlimit)
From: Mykola Lysenko
Date: Wed Feb 22 2023 - 15:03:58 EST
Hi Tiezhu,
You can run BPF CI tests on your patch before sending it out by following these instructions:
https://docs.kernel.org/bpf/bpf_devel_QA.html#q-how-do-i-run-bpf-ci-on-my-changes-before-sending-them-out-for-review
Thanks,
Mykola
> On Feb 22, 2023, at 10:06 AM, Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote:
>
> !-------------------------------------------------------------------|
> This Message Is From an External Sender
>
> |-------------------------------------------------------------------!
>
> On Wed, Feb 22, 2023 at 3:55 AM Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote:
>>
>> __NR_getrlimit is defined only if __ARCH_WANT_SET_GET_RLIMIT is defined:
>>
>> #ifdef __ARCH_WANT_SET_GET_RLIMIT
>> /* getrlimit and setrlimit are superseded with prlimit64 */
>> #define __NR_getrlimit 163
>> ...
>> #endif
>>
>> Some archs do not define __ARCH_WANT_SET_GET_RLIMIT, it should check
>> __ARCH_WANT_SET_GET_RLIMIT before syscall(__NR_getrlimit) to fix the
>> following build error:
>>
>> TEST-OBJ [test_progs] user_ringbuf.test.o
>> tools/testing/selftests/bpf/prog_tests/user_ringbuf.c: In function 'kick_kernel_cb':
>> tools/testing/selftests/bpf/prog_tests/user_ringbuf.c:593:17: error: '__NR_getrlimit' undeclared (first use in this function)
>> 593 | syscall(__NR_getrlimit);
>> | ^~~~~~~~~~~~~~
>> tools/testing/selftests/bpf/prog_tests/user_ringbuf.c:593:17: note: each undeclared identifier is reported only once for each function it appears in
>> make: *** [Makefile:573: tools/testing/selftests/bpf/user_ringbuf.test.o] Error 1
>> make: Leaving directory 'tools/testing/selftests/bpf'
>>
>> Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx>
>> ---
>> tools/testing/selftests/bpf/prog_tests/user_ringbuf.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/tools/testing/selftests/bpf/prog_tests/user_ringbuf.c b/tools/testing/selftests/bpf/prog_tests/user_ringbuf.c
>> index 3a13e10..0550307 100644
>> --- a/tools/testing/selftests/bpf/prog_tests/user_ringbuf.c
>> +++ b/tools/testing/selftests/bpf/prog_tests/user_ringbuf.c
>> @@ -590,7 +590,9 @@ static void *kick_kernel_cb(void *arg)
>> /* Kick the kernel, causing it to drain the ring buffer and then wake
>> * up the test thread waiting on epoll.
>> */
>> +#ifdef __ARCH_WANT_SET_GET_RLIMIT
>> syscall(__NR_getrlimit);
>> +#endif
>
> This is clearly breaks user_ringbuf test on x86:
> https://github.com/kernel-patches/bpf/actions/runs/4242660318/jobs/7374845859
>
> Please do not send patches that make selftest compile on your favorite arch.
> Make sure the patches work correctly on other archs too.