On Mon, 2016-09-05 at 14:56 +0200, Daniel Mack wrote: > On 08/27/2016 02:08 AM, Alexei Starovoitov wrote: [] > > + switch (attr->attach_type) { > > + case BPF_ATTACH_TYPE_CGROUP_INET_INGRESS: > > + case BPF_ATTACH_TYPE_CGROUP_INET_EGRESS: { > > + struct cgroup *cgrp; > > + > > + prog = bpf_prog_get_type(attr->attach_bpf_fd, > > + BPF_PROG_TYPE_CGROUP_SOCKET_FILTER); > > + if (IS_ERR(prog)) > > + return PTR_ERR(prog); > > + > > + cgrp = cgroup_get_from_fd(attr->target_fd); > > + if (IS_ERR(cgrp)) { > > + bpf_prog_put(prog); > > + return PTR_ERR(cgrp); > > + } > > + > > + cgroup_bpf_update(cgrp, prog, attr->attach_type); > > + cgroup_put(cgrp); > > + > > + break; > > + } > this } formatting style is confusing. The above } looks > like it matches 'switch () {'. > May be move 'struct cgroup *cgrp' to the top to avoid that?
This style of case statements that declare local variables with an open brace after the case statement switch (bar) { [cases...] case foo: { local declarations; code... } [cases...] } is used quite frequently in the kernel. I think it's fine as is.