[LTP] [PATCH] cgroup_core02: Allocate child stack using mmap()
Martin Doucha
mdoucha@suse.cz
Fri Jan 17 15:48:43 CET 2025
Some architectures like arm64 have strict requirements for stack alignment.
Statically allocated buffer may result in one of the test processes
getting killed by SIGBUS. Allocate child stack using mmap() to ensure
the requirements are met.
Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---
testcases/kernel/controllers/cgroup/cgroup_core02.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/testcases/kernel/controllers/cgroup/cgroup_core02.c b/testcases/kernel/controllers/cgroup/cgroup_core02.c
index 733e88ee7..e0b96ecf4 100644
--- a/testcases/kernel/controllers/cgroup/cgroup_core02.c
+++ b/testcases/kernel/controllers/cgroup/cgroup_core02.c
@@ -51,7 +51,7 @@ static int lesser_ns_open_thread_fn(void *arg)
static void test_lesser_ns_open(void)
{
int i;
- static char stack[65536];
+ char *stack;
pid_t pid;
int status;
struct lesser_ns_open_thread_arg targ = { .fds = {0}, .loops = -1};
@@ -63,14 +63,19 @@ static void test_lesser_ns_open(void)
SAFE_CG_PRINT(cg_child_a, "cgroup.procs", "0");
SAFE_CG_FCHOWN(cg_child_a, "cgroup.procs", nobody_uid, -1);
SAFE_CG_FCHOWN(cg_child_b, "cgroup.procs", nobody_uid, -1);
+ stack = SAFE_MMAP(NULL, 65536, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
pid = ltp_clone(CLONE_NEWCGROUP | CLONE_FILES | CLONE_VM | SIGCHLD,
lesser_ns_open_thread_fn, &targ, 65536, stack);
+
if (pid < 0) {
tst_res(TFAIL, "unexpected negative pid %d", pid);
exit(1);
}
SAFE_WAITPID(pid, &status, 0);
+ SAFE_MUNMAP(stack, 65536);
+
for (i = 0; i < targ.loops; i++) {
if (targ.fds[i] < 1) {
tst_res(TFAIL, "unexpected negative fd %d", targ.fds[i]);
--
2.47.0
More information about the ltp
mailing list