[LTP] [PATCH v1] Fix off-by-one error in pidns05
Martin Doucha
mdoucha@suse.cz
Wed Nov 15 14:29:39 CET 2023
Hi,
On 15. 11. 23 14:03, Andrea Cervesato wrote:
> 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) {
I don't think the pointer dereference should be removed here.
> 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;
> }
>
--
Martin Doucha mdoucha@suse.cz
SW Quality Engineer
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic
More information about the ltp
mailing list