• Andrey Ignatov's avatar
    bpf: Introduce bpf_sysctl_get_current_value helper · 1d11b301
    Andrey Ignatov authored
    Add bpf_sysctl_get_current_value() helper to copy current sysctl value
    into provided by BPF_PROG_TYPE_CGROUP_SYSCTL program buffer.
    
    It provides same string as user space can see by reading corresponding
    file in /proc/sys/, including new line, etc.
    
    Documentation for the new helper is provided in bpf.h UAPI.
    
    Since current value is kept in ctl_table->data in a parsed form,
    ctl_table->proc_handler() with write=0 is called to read that data and
    convert it to a string. Such a string can later be parsed by a program
    using helpers that will be introduced separately.
    
    Unfortunately it's not trivial to provide API to access parsed data due to
    variety of data representations (string, intvec, uintvec, ulongvec,
    custom structures, even NULL, etc). Instead it's assumed that user know
    how to handle specific sysctl they're interested in and appropriate
    helpers can be used.
    
    Since ctl_table->proc_handler() expects __user buffer, conversion to
    __user happens for kernel allocated one where the value is stored.
    Signed-off-by: default avatarAndrey Ignatov <rdna@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    1d11b301
cgroup.c 25.3 KB