[LTP] [PATCH v1] Fix off-by-one error in pidns05
Andrea Cervesato
andrea.cervesato@suse.de
Wed Nov 15 14:03:40 CET 2023
From: Andrea Cervesato <andrea.cervesato@suse.com>
Since we count nested processes from zero, we need to check that nested
level value is not bigger than MAX_DEPTH - 1. This patch also remove
shared pointer which counts number of levels and replace it with a
regular scalar value.
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
testcases/kernel/containers/pidns/pidns05.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/testcases/kernel/containers/pidns/pidns05.c b/testcases/kernel/containers/pidns/pidns05.c
index 0e7739aaa..7843fe7a9 100644
--- a/testcases/kernel/containers/pidns/pidns05.c
+++ b/testcases/kernel/containers/pidns/pidns05.c
@@ -24,7 +24,7 @@ static struct tst_clone_args clone_args = {
};
static pid_t pid_max;
-static void child_func(int *level)
+static void child_func(const int level)
{
pid_t cpid, ppid;
@@ -34,15 +34,13 @@ static void child_func(int *level)
TST_EXP_EQ_LI(cpid, 1);
TST_EXP_EQ_LI(ppid, 0);
- if (*level >= MAX_DEPTH) {
+ if (level >= MAX_DEPTH - 1) {
TST_CHECKPOINT_WAKE(0);
return;
}
- (*level)++;
-
if (!SAFE_CLONE(&clone_args)) {
- child_func(level);
+ child_func(level + 1);
return;
}
@@ -81,14 +79,13 @@ static void setup(void)
static void run(void)
{
int i, status, children;
- int level = 0;
pid_t pids_new[MAX_DEPTH];
pid_t pids[MAX_DEPTH];
pid_t pid;
pid = SAFE_CLONE(&clone_args);
if (!pid) {
- child_func(&level);
+ child_func(0);
return;
}
--
2.35.3
More information about the ltp
mailing list