Re: [LTP] [PATCH v5] kill01: New case cgroup kill

Wei Gao via ltp
2023-03-18T05:01:00Z

On Thu, Mar 16, 2023 at 11:10:07AM +0000, Richard Palethorpe wrote:
>
> Wei Gao <wegao@suse.com> writes:
>
> >> > +static int cg_run_nowait(const struct tst_cg_group *const cg,
> >> > + void (*fn)(void))
> >>
> >> Why keep this function?
> >>
> >> If you want to convert tests to LTP, then don't do the minimum possible
> >> to use the LTP API. Use as much of it as possible otherwise we are just
> >> importing brittle self tests.
> >>
> > function is useful and wrap the fork action & put pid into cgroup.procs,
> > is there any LTP API can replace this function? Could you help give
> > example.
>
> IMO you don't need to wrap fork or SAFE_CG_PRINTF, just write it inline.
More logic added into this function in latest patch v6, i prefer keep it currently.
>
> >> > +
> >> > + for (i = 0; i < pid_num; i++)
> >> > + pids[i] = cg_run_nowait(cg_child_test_simple, child_fn);
> >>
> >> If the parent is killed and the children are moved then they will return
> >> and cause a fork bomb.
> > There is no extra fork action in child_fn so all child_fn will
> > reparent and exit.
>
> I don't see how it will exit? It seems like it will just return.

The child_fun will exit if parent id is changed like below

+static void child_fn(void)
+{
+ int ppid = getppid();
+
+ while (getppid() == ppid)
+ usleep(1000);
+
+}