не удалось создать карту: 22 Неверный аргумент

Я скомпилировал примеры программ bpf, представленные здесь — https://github.com/torvalds/linux/tree/master/samples/bpf, следуя инструкциям. Для большей части программы во время выполнения я получаю эту ошибку:

sudo ./sockex1  
failed to create a map: 22 Invalid argument

Я проверил соответствующие флаги BPF в своей системе, и они установлены правильно. Я использую исходный код linux-4.17.


person nebi    schedule 28.06.2018    source источник
comment
У меня этот пример все еще работает на ядре 4.18rc2. Вы получили какую-либо конкретную ошибку при компиляции примера? На вашей машине тоже установлена ​​версия 4.17 или что-то более старое? Вы изменили код образца? Вы пробовали отслеживать программу, чтобы увидеть, можете ли вы получить больше информации?   -  person Qeole    schedule 28.06.2018
comment
@Qeole При компиляции примеров не было ошибок. Но на моей машине работает старое ядро. Версия ядра: 4.13.0-45-универсальная. У меня есть вывод strace здесь: pastebin.com/g1cyV1CL   -  person nebi    schedule 28.06.2018
comment
@Qeole Нужно ли мне также устанавливать версию ядра - 4.17 на мою машину?   -  person nebi    schedule 28.06.2018
comment
Я ожидаю, что этот пример будет нормально работать и на 4.13. Вы уверены, что ваша система имеет правильные флаги? Удалось ли вам загрузить другую программу или карту eBPF из любого другого примера?   -  person Qeole    schedule 28.06.2018
comment
У меня установлены такие флаги: grep BPF config-4.13.0-45-generic CONFIG_CGROUP_BPF=y CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_NETFILTER_XT_MATCH_BPF=m CONFIG_NET_CLS_BPF=m CONFIG_NET_ACT_BPF=m CONFIG_BPF_JIT=y CONFIG_LWTUNNEL_BPF=y CONFIG_HAVE_EBPF_JIT=y CONFIG_BPF_EVENTS=y CONFIG_TEST_BPF=m   -  person nebi    schedule 28.06.2018
comment
Хорошо, я думаю, что здесь важен только CONFIG_BPF_SYSCALL, так что это выглядит хорошо. Любая другая программа/карта, которую вам удается загрузить, так или иначе? Извините, я действительно не знаю, как здесь больше отлаживать :(. Вы можете попробовать с ядром 4.17 на всякий случай, если вы не получите здесь лучшего ответа или информации об отладке…   -  person Qeole    schedule 28.06.2018


Ответы (1)


Перекомпилируйте ядро ​​с флагом CONFIG_BPF_STREAM_PARSER=y, который требуется для поддержки SOCKMAP.

person SPYFF    schedule 24.07.2018