[LTP] [PATCH v2] getrlimit/getrlimit03: Skip test if __NR_getrlimit_ulong not implemented

Tiezhu Yang yangtiezhu@loongson.cn
Tue Jul 8 13:28:10 CEST 2025


In the LTP code, __NR_getrlimit_ulong is defined as __NR_ugetrlimit
or __NR_getrlimit.

In the Linux kernel, LoongArch uses the generic syscall table
which is defined in include/uapi/asm-generic/unistd.h. We can
see that __NR_ugetrlimit is not defined in the generic header,
and also there is no __ARCH_WANT_SET_GET_RLIMIT definition in
the arch specific header arch/loongarch/include/asm/unistd.h,
so both __NR_ugetrlimit and __NR_getrlimit are not implemented
on LoongArch.

That is to say, no need to compare the return value and errno
about the syscall numbers __NR_prlimit64 and __NR_{u}getrlimit,
just check this case and then skip the test.

While at it, modify the value of test.tcnt as 1 to skip only
once if the errno of getrlimit_ulong() or getrlimit_long() is
ENOSYS.

Without this patch:

$ /opt/ltp/testcases/bin/getrlimit03
...
getrlimit03.c:102: TFAIL: __NR_prlimit64(0) returned 0 (SUCCESS) but __NR_getrlimit(0) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(1) returned 0 (SUCCESS) but __NR_getrlimit(1) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(2) returned 0 (SUCCESS) but __NR_getrlimit(2) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(3) returned 0 (SUCCESS) but __NR_getrlimit(3) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(4) returned 0 (SUCCESS) but __NR_getrlimit(4) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(5) returned 0 (SUCCESS) but __NR_getrlimit(5) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(6) returned 0 (SUCCESS) but __NR_getrlimit(6) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(7) returned 0 (SUCCESS) but __NR_getrlimit(7) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(8) returned 0 (SUCCESS) but __NR_getrlimit(8) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(9) returned 0 (SUCCESS) but __NR_getrlimit(9) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(10) returned 0 (SUCCESS) but __NR_getrlimit(10) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(11) returned 0 (SUCCESS) but __NR_getrlimit(11) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(12) returned 0 (SUCCESS) but __NR_getrlimit(12) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(13) returned 0 (SUCCESS) but __NR_getrlimit(13) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(14) returned 0 (SUCCESS) but __NR_getrlimit(14) returned -1 (ENOSYS)
getrlimit03.c:102: TFAIL: __NR_prlimit64(15) returned 0 (SUCCESS) but __NR_getrlimit(15) returned -1 (ENOSYS)

Summary:
passed   0
failed   16
broken   0
skipped  0
warnings 0

With this patch:

$ /opt/ltp/testcases/bin/getrlimit03
...
getrlimit03.c:166: TCONF: __NR_getrlimit not implemented: ENOSYS (38)

Summary:
passed   0
failed   0
broken   0
skipped  1
warnings 0

How to reproduce:

git clone https://github.com/linux-test-project/ltp.git
cd ltp
make autotools
./configure
make all
sudo make install
/opt/ltp/testcases/bin/getrlimit03

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Reviewed-by: Li Wang <liwang@redhat.com>
---
 testcases/kernel/syscalls/getrlimit/getrlimit03.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c b/testcases/kernel/syscalls/getrlimit/getrlimit03.c
index 604082ccf..bb6160c2b 100644
--- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c
+++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c
@@ -162,6 +162,12 @@ static void run(unsigned int resource)
 	errno = 0;
 	ret_ul = getrlimit_ulong(resource, &rlim_ul);
 	errno_ul = errno;
+	if (errno_ul == ENOSYS) {
+		tst_res(TCONF | TERRNO,
+			"%s not implemented", __NR_getrlimit_ulong_str);
+		test.tcnt = 1;
+		return;
+	}
 
 	if (compare_retval(resource, ret_u64, errno_u64, ret_ul, errno_ul,
 			   __NR_getrlimit_ulong_str) ||
@@ -181,6 +187,7 @@ static void run(unsigned int resource)
 	if (errno_l == ENOSYS) {
 		tst_res(TCONF | TERRNO,
 			"__NR_getrlimit(%d) not implemented", __NR_getrlimit);
+		test.tcnt = 1;
 		return;
 	}
 
-- 
2.42.0



More information about the ltp mailing list