diff mbox series

[v3] syscalls/fanotify07: Add stop_children() to cleanup()

Message ID 20211122082146.59895-1-zhaogongyi@huawei.com
State Accepted
Headers show
Series [v3] syscalls/fanotify07: Add stop_children() to cleanup() | expand

Commit Message

Zhao Gongyi Nov. 22, 2021, 8:21 a.m. UTC
When we run the testcase simultaneously, and the ulimit of open
files is small, the testcase will fail and remain many while(1)
tasks in system, it makes the system very stuck.

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
---
v2->v3: replace memset() with assignment statement in loop

 testcases/kernel/syscalls/fanotify/fanotify07.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

--
2.17.1

Comments

Matthew Bobrowski Nov. 23, 2021, 5:40 a.m. UTC | #1
On Mon, Nov 22, 2021 at 04:21:46PM +0800, Zhao Gongyi wrote:
> When we run the testcase simultaneously, and the ulimit of open
> files is small, the testcase will fail and remain many while(1)
> tasks in system, it makes the system very stuck.
> 
> Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>

This patch looks OK to me. Have you taken the time to verify whether
this fix addresses the issue you've outlined in the patch description?

FTR, please remember to also explicitly CC those who you'd like to get
feedback from. Most of us are exceptionally busy and miss things that
are flying around in the many mailing lists.

> ---
> v2->v3: replace memset() with assignment statement in loop
> 
>  testcases/kernel/syscalls/fanotify/fanotify07.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> --
> 2.17.1
> 
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify07.c b/testcases/kernel/syscalls/fanotify/fanotify07.c
> index cc56d9019..8220213b1 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify07.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify07.c
> @@ -86,13 +86,19 @@ static int stop_children(void)
>  	int child_ret;
>  	int i, ret = 0;
> 
> -	for (i = 0; i < MAX_CHILDREN; i++)
> +	for (i = 0; i < MAX_CHILDREN; i++) {
> +		if (!child_pid[i])
> +			continue;
>  		SAFE_KILL(child_pid[i], SIGKILL);
> +	}
> 
>  	for (i = 0; i < MAX_CHILDREN; i++) {
> +		if (!child_pid[i])
> +			continue;
>  		SAFE_WAITPID(child_pid[i], &child_ret, 0);
>  		if (!WIFSIGNALED(child_ret))
>  			ret = 1;
> +		child_pid[i] = 0;
>  	}
> 
>  	return ret;
> @@ -190,6 +196,8 @@ static void setup(void)
> 
>  static void cleanup(void)
>  {
> +	stop_children();
> +
>  	if (fd_notify > 0)
>  		SAFE_CLOSE(fd_notify);
>  }

/M
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/fanotify/fanotify07.c b/testcases/kernel/syscalls/fanotify/fanotify07.c
index cc56d9019..8220213b1 100644
--- a/testcases/kernel/syscalls/fanotify/fanotify07.c
+++ b/testcases/kernel/syscalls/fanotify/fanotify07.c
@@ -86,13 +86,19 @@  static int stop_children(void)
 	int child_ret;
 	int i, ret = 0;

-	for (i = 0; i < MAX_CHILDREN; i++)
+	for (i = 0; i < MAX_CHILDREN; i++) {
+		if (!child_pid[i])
+			continue;
 		SAFE_KILL(child_pid[i], SIGKILL);
+	}

 	for (i = 0; i < MAX_CHILDREN; i++) {
+		if (!child_pid[i])
+			continue;
 		SAFE_WAITPID(child_pid[i], &child_ret, 0);
 		if (!WIFSIGNALED(child_ret))
 			ret = 1;
+		child_pid[i] = 0;
 	}

 	return ret;
@@ -190,6 +196,8 @@  static void setup(void)

 static void cleanup(void)
 {
+	stop_children();
+
 	if (fd_notify > 0)
 		SAFE_CLOSE(fd_notify);
 }