Message ID | 20211105090200.103485-1-zhaogongyi@huawei.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2] syscalls/fanotify07: add stop_children() to cleanup() | expand |
Hi all, > 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> > --- > v1->v2: add stop_children() to cleanup(),suggested by Amir and Matthew. > testcases/kernel/syscalls/fanotify/fanotify07.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > diff --git a/testcases/kernel/syscalls/fanotify/fanotify07.c b/testcases/kernel/syscalls/fanotify/fanotify07.c > index cc56d9019..40d1b96ce 100644 > --- a/testcases/kernel/syscalls/fanotify/fanotify07.c > +++ b/testcases/kernel/syscalls/fanotify/fanotify07.c > @@ -86,15 +86,21 @@ 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; I slightly prefer instead of using memset code which Amir suggested: child_pid[i] = 0; > } Otherwise LGTM. Reviewed-by: Petr Vorel <pvorel@suse.cz> NOTE: patch was corrupted, please take care next time (error: corrupt patch at line 131) Also Kind regards, Petr > + memset(child_pid, 0, sizeof(pid_t) * MAX_CHILDREN); > return ret; > } > @@ -190,6 +196,8 @@ static void setup(void) > static void cleanup(void) > { > + stop_children(); > + > if (fd_notify > 0) > SAFE_CLOSE(fd_notify); > } > @@ -201,6 +209,7 @@ static struct tst_test test = { > .needs_tmpdir = 1, > .forks_child = 1, > .needs_root = 1, > }; > #else
diff --git a/testcases/kernel/syscalls/fanotify/fanotify07.c b/testcases/kernel/syscalls/fanotify/fanotify07.c index cc56d9019..40d1b96ce 100644 --- a/testcases/kernel/syscalls/fanotify/fanotify07.c +++ b/testcases/kernel/syscalls/fanotify/fanotify07.c @@ -86,15 +86,21 @@ 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; } + memset(child_pid, 0, sizeof(pid_t) * MAX_CHILDREN); return ret; } @@ -190,6 +196,8 @@ static void setup(void) static void cleanup(void) { + stop_children(); + if (fd_notify > 0) SAFE_CLOSE(fd_notify); } @@ -201,6 +209,7 @@ static struct tst_test test = { .needs_tmpdir = 1, .forks_child = 1, .needs_root = 1, }; #else -- 2.17.1
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> --- v1->v2: add stop_children() to cleanup(),suggested by Amir and Matthew. testcases/kernel/syscalls/fanotify/fanotify07.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)