Sorry, it's a mistake, please ignore this patch :( On 2024/5/24 17:18, Xiu Jianfeng wrote: > Currently pids_can_attach() always returns 0 and never fails, so the > can_attach() and cancel_attach() hooks can be replaced by attach(), > since attach() is guaranteed to succeed and don't need to fallback. > > Signed-off-by: Xiu Jianfeng <xiujianfeng@xxxxxxxxxx> > --- > kernel/cgroup/pids.c | 25 ++----------------------- > 1 file changed, 2 insertions(+), 23 deletions(-) > > diff --git a/kernel/cgroup/pids.c b/kernel/cgroup/pids.c > index 0e5ec7d59b4d..86d06f709957 100644 > --- a/kernel/cgroup/pids.c > +++ b/kernel/cgroup/pids.c > @@ -186,7 +186,7 @@ static int pids_try_charge(struct pids_cgroup *pids, int num) > return -EAGAIN; > } > > -static int pids_can_attach(struct cgroup_taskset *tset) > +static void pids_attach(struct cgroup_taskset *tset) > { > struct task_struct *task; > struct cgroup_subsys_state *dst_css; > @@ -207,26 +207,6 @@ static int pids_can_attach(struct cgroup_taskset *tset) > pids_charge(pids, 1); > pids_uncharge(old_pids, 1); > } > - > - return 0; > -} > - > -static void pids_cancel_attach(struct cgroup_taskset *tset) > -{ > - struct task_struct *task; > - struct cgroup_subsys_state *dst_css; > - > - cgroup_taskset_for_each(task, dst_css, tset) { > - struct pids_cgroup *pids = css_pids(dst_css); > - struct cgroup_subsys_state *old_css; > - struct pids_cgroup *old_pids; > - > - old_css = task_css(task, pids_cgrp_id); > - old_pids = css_pids(old_css); > - > - pids_charge(old_pids, 1); > - pids_uncharge(pids, 1); > - } > } > > /* > @@ -374,8 +354,7 @@ static struct cftype pids_files[] = { > struct cgroup_subsys pids_cgrp_subsys = { > .css_alloc = pids_css_alloc, > .css_free = pids_css_free, > - .can_attach = pids_can_attach, > - .cancel_attach = pids_cancel_attach, > + .attach = pids_attach, > .can_fork = pids_can_fork, > .cancel_fork = pids_cancel_fork, > .release = pids_release,