This patchset adds support of a pointer to struct among global function arguments. The motivation is to overcome the limit on the maximum number of allowed arguments and avoid tricky and unoptimal ways of passing arguments. The limitation is that used structs may not contain any other pointers. Dmitrii Banshchikov (3): bpf: Factor out nullable reg type conversion bpf: Support pointer to struct in global func args selftests/bpf: Add unit tests for global functions include/linux/bpf_verifier.h | 2 + kernel/bpf/btf.c | 59 ++++++++-- kernel/bpf/verifier.c | 107 ++++++++++++------ .../bpf/prog_tests/test_global_funcs.c | 5 + .../selftests/bpf/progs/test_global_func10.c | 29 +++++ .../selftests/bpf/progs/test_global_func11.c | 19 ++++ .../selftests/bpf/progs/test_global_func12.c | 21 ++++ .../selftests/bpf/progs/test_global_func13.c | 24 ++++ .../selftests/bpf/progs/test_global_func9.c | 59 ++++++++++ 9 files changed, 284 insertions(+), 41 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c -- 2.25.1