[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