Re: [PATCH v4 bpf-next 3/5] bpf: Make cgroup storages shared across attaches on the same cgroup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 21, 2020 at 1:05 PM Martin KaFai Lau <kafai@xxxxxx> wrote:
> I quickly checked zero is actually BPF_CGROUP_INET_INGRESS instead
> of UNSPEC for attach_type.  It will be confusing on the syscall
> side. e.g. map dumping with key.attach_type == BPF_CGROUP_INET_INGRESS
> while the only cgroup program is actually attaching to BPF_CGROUP_INET_EGRESS.
>
> I don't have a clean way out for this.  Adding a non-zero UNSPEC
> to "enum bpf_attach_type" seems wrong also.
> One possible way out is to allow the bpf_cgroup_storage_map
> to have a smaller key size (i.e. allow both sizeof(cgroup_inode_id)
> and the existing sizeof(struct bpf_cgroup_storage_key).  That
> will completely remove attach_type from the picture if the user
> specified to use sizeof(cgroup_inode_id) as the key_size.
> If sizeof(struct bpf_cgroup_storage_key) is specified, the attach_type
> is still used in cmp().
>
> The bpf_cgroup_storage_key_cmp() need to do cmp accordingly.
> Same changes is needed to lookup_elem, delete_elem, check_btf, map_alloc...etc.

ACK. Considering that the cgroup_inode_id is the first field of struct
bpf_cgroup_storage_key, I can probably just use this fact and directly
use the user-provided map key (after it's copied to kernel space) and
cast the pointer to a __u64 - or are there any architectures where the
first field is not at offset zero? If this is done then we can change
all the kernel internal APIs to use __u64 cgroup_inode_id, ignoring
the existence of the struct aside from the map creation (size checking
and BTF checking).


> > +#include "../cgroup/cgroup-internal.h"
> Why?

cgroup_mutex is declared in this header.

YiFei Zhu



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux