brk is disabled in purecap, see the ABI for reference[1], so only check that calling it returns -ENOSYS. Do it explicitly in the test setup otherwise the tests would be skipped by tst_syscall. Skip them in purecap if it is correctly disabled.
Add brk01 and brk02 to the morello_transitional_extended list.
[1]: https://git.morello-project.org/morello/kernel/linux/-/wikis/Morello-pure-ca...
Signed-off-by: Teo Couprie Diaz teo.coupriediaz@arm.com --- runtest/morello_transitional_extended | 3 +++ testcases/kernel/syscalls/brk/brk01.c | 10 ++++++++++ testcases/kernel/syscalls/brk/brk02.c | 10 ++++++++++ 3 files changed, 23 insertions(+)
diff --git a/runtest/morello_transitional_extended b/runtest/morello_transitional_extended index 067fe82da..9549f9aa5 100644 --- a/runtest/morello_transitional_extended +++ b/runtest/morello_transitional_extended @@ -1,5 +1,8 @@ #DESCRIPTION: Morello transitional extended ABI system calls
+brk01 brk01 +brk02 brk02 + epoll_create01 epoll_create01 epoll_create02 epoll_create02 epoll_create1_01 epoll_create1_01 diff --git a/testcases/kernel/syscalls/brk/brk01.c b/testcases/kernel/syscalls/brk/brk01.c index d4596c20f..adc6153b2 100644 --- a/testcases/kernel/syscalls/brk/brk01.c +++ b/testcases/kernel/syscalls/brk/brk01.c @@ -49,6 +49,16 @@ void verify_brk(void) tst_res(TPASS, "brk() works fine"); }
+static void setup(void) +{ +#ifdef __CHERI_PURE_CAPABILITY__ + TST_EXP_FAIL(syscall(__NR_brk, 0), ENOSYS, + "brk is not implemented in purecap"); + tst_brk(TCONF, "Cannot test brk in purecap: syscall disabled."); +#endif +} + static struct tst_test test = { + .setup = setup, .test_all = verify_brk, }; diff --git a/testcases/kernel/syscalls/brk/brk02.c b/testcases/kernel/syscalls/brk/brk02.c index dabda30c2..ec1db545e 100644 --- a/testcases/kernel/syscalls/brk/brk02.c +++ b/testcases/kernel/syscalls/brk/brk02.c @@ -53,6 +53,16 @@ void brk_down_vmas(void) tst_res(TPASS, "munmap at least two VMAs of brk() passed"); }
+static void setup(void) +{ +#ifdef __CHERI_PURE_CAPABILITY__ + TST_EXP_FAIL(syscall(__NR_brk, 0), ENOSYS, + "brk is not implemented in purecap"); + tst_brk(TCONF, "Cannot test brk in purecap: syscall disabled."); +#endif +} + static struct tst_test test = { + .setup = setup, .test_all = brk_down_vmas, };