• Z
    bpf, sockops: Enhance the return capability of sockops · 01d81b16
    zhang-mingyi66 提交于
    hulk inclusion
    category: feature
    bugzilla: https://gitee.com/openeuler/kernel/issues/I7LE1H
    
    ----------------------------------------------------
    
    Since commit 2585cd62 ("bpf: Only reply field should be writeable"),
    sockops is not allowd to modify the replylong field except replylong[0].
    The reason is that the replylong[1] to replylong[3] field is not used
    at that time.
    
    But in actual use, we can call `BPF_CGROUP_RUN_PROG_SOCK_OPS` in the
    kernel modules and expect sockops to return some useful data.
    
    The design comment about bpf_sock_ops::replylong in
    include/uapi/linux/bpf.h is described as follows:
    
    ```
      struct bpf_sock_ops {
            __u32 op;
            union {
                    __u32 args[4];          /* Optionally passed to bpf program */
                    __u32 reply;            /* Returned by bpf program          */
                    __u32 replylong[4];     /* Optioznally returned by bpf prog  */
            };
      ...
    ```
    
    It seems to contradict the purpose for which the field was originally
    designed. Let's remove this restriction.
    
    Fixes: 2585cd62 ("bpf: Only reply field should be writeable")
    Signed-off-by: Nzhang-mingyi66 <zhangmingyi5@huawei.com>
    01d81b16
filter.c 317.0 KB