| @@ -6449,6 +6449,10 @@ sk_msg_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) · 6448 unmodified lines |
| 6449 | 6449 | return &bpf_get_current_uid_gid_proto; |
| 6450 | 6450 | case BPF_FUNC_get_current_pid_tgid: |
| 6451 | 6451 | return &bpf_get_current_pid_tgid_proto; |
| 6452 | + case BPF_FUNC_sk_storage_get: |
| 6453 | + return &bpf_sk_storage_get_proto; |
| 6454 | + case BPF_FUNC_sk_storage_delete: |
| 6455 | + return &bpf_sk_storage_delete_proto; |
| 6452 | 6456 | #ifdef CONFIG_CGROUPS |
| 6453 | 6457 | case BPF_FUNC_get_current_cgroup_id: |
| 6454 | 6458 | return &bpf_get_current_cgroup_id_proto; |
| @@ -7273,6 +7277,11 @@ static bool sk_msg_is_valid_access(int off, int size, · 818 unmodified lines |
| 7273 | 7277 | if (size != sizeof(__u64)) |
| 7274 | 7278 | return false; |
| 7275 | 7279 | break; |
| 7280 | + case offsetof(struct sk_msg_md, sk): |
| 7281 | + if (size != sizeof(__u64)) |
| 7282 | + return false; |
| 7283 | + info->reg_type = PTR_TO_SOCKET; |
| 7284 | + break; |
| 7276 | 7285 | case bpf_ctx_range(struct sk_msg_md, family): |
| 7277 | 7286 | case bpf_ctx_range(struct sk_msg_md, remote_ip4): |
| 7278 | 7287 | case bpf_ctx_range(struct sk_msg_md, local_ip4): |
| @@ -8609,6 +8618,12 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type, · 1330 unmodified lines |
| 8609 | 8618 | si->dst_reg, si->src_reg, |
| 8610 | 8619 | offsetof(struct sk_msg_sg, size)); |
| 8611 | 8620 | break; |
| 8621 | + |
| 8622 | + case offsetof(struct sk_msg_md, sk): |
| 8623 | + *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_msg, sk), |
| 8624 | + si->dst_reg, si->src_reg, |
| 8625 | + offsetof(struct sk_msg, sk)); |
| 8626 | + break; |
| 8612 | 8627 | } |
| 8613 | 8628 | |
| 8614 | 8629 | return insn - insn_buf; |