[LTP] [PATCH v3] syscalls/fanotify07: Add stop_children() to cleanup()
zhaogongyi
zhaogongyi@huawei.com
Tue Nov 23 08:09:47 CET 2021
Hi,
I have test the patch through setting "ulimit -n 20" and while true;do ./fanotify07 &;echo "";done
Or just add a tst_brk as follow:
/*
* Create and destroy another instance. This may hang if
* unanswered fanotify events block notification subsystem.
*/
newfd = setup_instance();
SAFE_CLOSE(newfd);
/* inject */
tst_brk(TBROK, "exit abnormally");
tst_res(TPASS, "second instance destroyed successfully");
For email CC, I have CC to you and Amir yesterday, please check.
Thanks very much!
Gongyi
>
> 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
More information about the ltp
mailing list