On Wed, Dec 18, 2019 at 11:45 PM Andrey Ignatov <rdna@xxxxxx> wrote: > > __cgroup_bpf_attach has a lot of identical code to handle two scenarios: > BPF_F_ALLOW_MULTI is set and unset. > > Simplify it by splitting the two main steps: > > * First, the decision is made whether a new bpf_prog_list entry should > be allocated or existing entry should be reused for the new program. > This decision is saved in replace_pl pointer; > > * Next, replace_pl pointer is used to handle both possible states of > BPF_F_ALLOW_MULTI flag (set / unset) instead of doing similar work for > them separately. > > This splitting, in turn, allows to make further simplifications: > > * The check for attaching same program twice in BPF_F_ALLOW_MULTI mode > can be done before allocating cgroup storage, so that if user tries to > attach same program twice no alloc/free happens as it was before; > > * pl_was_allocated becomes redundant so it's removed. > > Signed-off-by: Andrey Ignatov <rdna@xxxxxx> > Acked-by: Martin KaFai Lau <kafai@xxxxxx> > --- lgtm Acked-by: Andrii Nakryiko <andriin@xxxxxx> > kernel/bpf/cgroup.c | 62 +++++++++++++++++---------------------------- > 1 file changed, 23 insertions(+), 39 deletions(-) > [...]