bpf: Introduce bpf_sysctl_{get,set}_new_value helpers
authorAndrey Ignatov <rdna@fb.com>
Fri, 8 Mar 2019 02:38:43 +0000 (18:38 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 12 Apr 2019 20:54:58 +0000 (13:54 -0700)
commit4e63acdff864654cee0ac5aaeda3913798ee78f6
tree85e2cff7f791e8e98dfcca646211ccc1278de61e
parent1d11b3016cec4ed9770b98e82a61708c8f4926e7
bpf: Introduce bpf_sysctl_{get,set}_new_value helpers

Add helpers to work with new value being written to sysctl by user
space.

bpf_sysctl_get_new_value() copies value being written to sysctl into
provided buffer.

bpf_sysctl_set_new_value() overrides new value being written by user
space with a one from provided buffer. Buffer should contain string
representation of the value, similar to what can be seen in /proc/sys/.

Both helpers can be used only on sysctl write.

File position matters and can be managed by an interface that will be
introduced separately. E.g. if user space calls sys_write to a file in
/proc/sys/ at file position = X, where X > 0, then the value set by
bpf_sysctl_set_new_value() will be written starting from X. If program
wants to override whole value with specified buffer, file position has
to be set to zero.

Documentation for the new helpers is provided in bpf.h UAPI.

Signed-off-by: Andrey Ignatov <rdna@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
fs/proc/proc_sysctl.c
include/linux/bpf-cgroup.h
include/linux/filter.h
include/uapi/linux/bpf.h
kernel/bpf/cgroup.c