On 08/27/2016 02:08 AM, Alexei Starovoitov wrote:
> On Fri, Aug 26, 2016 at 09:58:49PM +0200, Daniel Mack wrote:

>> +
>> +    struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
>> +            __u32           target_fd;      /* container object to attach 
>> to */
>> +            __u32           attach_bpf_fd;  /* eBPF program to attach */
>> +            __u32           attach_type;    /* BPF_ATTACH_TYPE_* */
>> +            __u64           attach_flags;
>> +    };
> 
> there is a 4 byte hole in this struct. Can we pack it differently?

Okay - I swapped "type" and "flags" to repair this.

>> +    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?

I kept it local to its users, but you're right, it's not worth it. Will
change.


Thanks,
Daniel


Reply via email to