bpf: add ability to configure BPF JIT kallsyms export at the boot time
Subsystems (5)
PATCH v2 3/3 bpf: add ability to configure BPF JIT kallsyms export at the boot time
This patch introduces two configuration options, BPF_JIT_KALLSYMS_BOOTPARAM and BPF_JIT_KALLSYMS_BOOTPARAM_VALUE, that allow configuring the initial value of net.core.bpf_jit_kallsyms sysctl knob. This enables export of addresses of JIT'ed BPF programs that created during the early boot.
--- Documentation/admin-guide/kernel-parameters.txt | 10 +++++++++ init/Kconfig | 30 +++++++++++++++++++++++++ kernel/bpf/core.c | 14 ++++++++++++ 3 files changed, 54 insertions(+)
Documentation/admin-guide/kernel-parameters.txt +10 -0
@@ -452,6 +452,16 @@ 2 - JIT hardening is enabled for all users. Default value is set via kernel config option. + bpf_jit_kallsyms= + Format: { "0" | "1" } + Sets initial value of net.core.bpf_jit_kallsyms + sysctl knob. + 0 - Addresses of JIT'ed BPF programs are not exported + to kallsyms. + 1 - Export of addresses of JIT'ed BPF programs is + enabled for privileged users. + Default value is set via kernel config option. + bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) bttv.radio= Most important insmod options are available as kernel args too.
init/Kconfig +30 -0
@@ -1464,6 +1464,36 @@ config BPF_JIT_HARDEN_BOOTPARAM_VALUE If you are unsure how to answer this question, answer 0. +config BPF_JIT_KALLSYMS_BOOTPARAM + bool "BPF JIT kallsyms export boot parameter" + default n + help + This option adds a kernel parameter 'bpf_jit_kallsyms' that allows + configuring default state of the net.core.bpf_jit_kallsyms sysctl + knob. If this option is selected, the default value of the + net.core.bpf_jit_kallsyms sysctl knob can be set on the kernel command + line. The purpose of this option is to allow enabling BPF JIT + kallsyms export for the BPF programs created during the early boot, + so they can be traced later. + + If you are unsure how to answer this question, answer N. + +config BPF_JIT_KALLSYMS_BOOTPARAM_VALUE + int "BPF JIT kallsyms export boot parameter default value" + depends on BPF_JIT_HARDEN_BOOTPARAM + range 0 1 + default 0 + help + This option sets the default value for the kernel parameter + 'bpf_jit_kallsyms' that configures default value of the + net.core.bpf_jit_kallsyms sysctl knob at boot. If this option is set + to 0 (zero), the net.core.bpf_jit_kallsyms will default to 0, which + will lead to disabling of exporting of addresses of JIT'ed BPF + programs. If this option is set to 1 (one), addresses of privileged + BPF programs are exported to kallsyms. + + If you are unsure how to answer this question, answer 0. + config USERFAULTFD bool "Enable userfaultfd() system call" select ANON_INODES
kernel/bpf/core.c +14 -0
@@ -321,7 +321,21 @@ __setup("bpf_jit_harden=", bpf_jit_harden_setup);int bpf_jit_harden__read_mostly ;#endif /* CONFIG_BPF_JIT_HARDEN_BOOTPARAM */ +#ifdef CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM +int bpf_jit_kallsyms__read_mostly =CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM_VALUE ; + +static int __init bpf_jit_kallsyms_setup (char *str) +{ +unsigned long enabled; + +if (!kstrtoul (str,0 , &enabled)) + bpf_jit_kallsyms = !!enabled; +return 1 ; +} +__setup ("bpf_jit_kallsyms=" , bpf_jit_kallsyms_setup); +#else /* !CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM */ int bpf_jit_kallsyms__read_mostly ; +#endif /* CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM */ static __always_inline void bpf_get_prog_addr_region(const struct bpf_prog *prog,
Signature · 1 line
2.1.4
kbuild test robot
build botThank you for the patch! Yet something to improve:
Hi Eugene,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Eugene-Syromiatnikov/bpf-add-boot-parameters-for-sysctl-knobs/20180526-164048 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: i386-randconfig-x074-06101602 (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
>> kernel//bpf/core.c:325:38: error: 'CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM_VALUE' undeclared here (not in a function); did you mean 'CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM'?
int bpf_jit_kallsyms __read_mostly = CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM_VALUE;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CONFIG_BPF_JIT_KALLSYMS_BOOTPARAMvim +325 kernel//bpf/core.c
323
324 #ifdef CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM
> 325 int bpf_jit_kallsyms __read_mostly = CONFIG_BPF_JIT_KALLSYMS_BOOTPARAM_VALUE;
326
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation