Re: Prog section rejected: Argument list too long (7)!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Sat, 24 Jul 2021, Vincent Li wrote:

> 
> 
> On Sat, 24 Jul 2021, Vincent Li wrote:
> 
> > On Fri, Jul 23, 2021 at 7:17 PM Vincent Li <vincent.mc.li@xxxxxxxxx> wrote:
> > >
> > >
> > > Hi BPF experts,
> > >
> > > I have a cilium PR https://github.com/cilium/cilium/pull/16916 that
> > > failed to pass verifier in kernel 4.19, the error is like:
> > >
> > > level=warning msg="Prog section '2/7' rejected: Argument list too long
> > > (7)!" subsys=datapath-loader
> > > level=warning msg=" - Type:         3" subsys=datapath-loader
> > > level=warning msg=" - Attach Type:  0" subsys=datapath-loader
> > > level=warning msg=" - Instructions: 4578 (482 over limit)"
> > > subsys=datapath-loader
> > > level=warning msg=" - License:      GPL" subsys=datapath-loader
> > > level=warning subsys=datapath-loader
> > > level=warning msg="Verifier analysis:" subsys=datapath-loader
> > > level=warning subsys=datapath-loader
> > > level=warning msg="Error filling program arrays!" subsys=datapath-loader
> > > level=warning msg="Unable to load program" subsys=datapath-loader
> > >
> > > then I tried to run the PR locally in my dev machine with custom upstream
> > > kernel version, I narrowed the issue down to between upstream kernel
> > > version 5.7 and 5.8, in 5.7, it failed with:
> > 
> > I further narrow it down to between 5.7 and 5.8-rc1 release, but still
> > no clue which commits in 5.8-rc1 resolved the issue
> > 
> > >
> > > level=warning msg="processed 50 insns (limit 1000000) max_states_per_insn
> > > 0 total_states 1 peak_states 1 mark_read 1" subsys=datapath-loader
> > > level=warning subsys=datapath-loader
> > > level=warning msg="Log buffer too small to dump verifier log 16777215
> > > bytes (9 tries)!" subsys=datapath-loader
> > > level=warning msg="Error filling program arrays!" subsys=datapath-loader
> > > level=warning msg="Unable to load program" subsys=datapath-loader
> > >
> > > 5.8 works fine.
> > >
> > > What difference between 5.7 and 5.8 to cause this verifier problem, I
> > > tried to git log v5.7..v5.8 kernel/bpf/verifier, I could not see commits
> > > that would make the difference with my limited BPF knowledge. Any clue
> > > would be appreciated!
> 
> I have git bisected to this commit:
> 
> # first fixed commit: [6f8a57ccf8511724e6f48d732cb2940889789ab2] bpf: Make 
> verifier log more relevant by default

both the cilium github PR test and my local dev machine PR test has the 
verbose set, for example, my local test has:

diff --git a/pkg/datapath/loader/netlink.go 
b/pkg/datapath/loader/netlink.go
index 381e1fbc8..00015eabc 100644
--- a/pkg/datapath/loader/netlink.go
+++ b/pkg/datapath/loader/netlink.go
@@ -106,7 +106,7 @@ func replaceDatapath(ctx context.Context, ifName, 
objPath, progSec, progDirectio
                loaderProg = "tc"
                args = []string{"filter", "replace", "dev", ifName, 
progDirection,
                        "prio", "1", "handle", "1", "bpf", "da", "obj", 
objPath,
-                       "sec", progSec,
+                       "sec", progSec, "verbose",
                }
        }
        cmd = exec.CommandContext(ctx, loaderProg, 
args...).WithFilters(libbpfFixupMsg)

if I remove the "verbose" change, and run the Cilium agent without 
kernel commit 6f8a57ccf8, the problem is gone, it seems commit 6f8a57ccf8 
is related

> 
> this commit looks only dealing with log, accidently fixed the PR issue I 
> have? my PR use __bpf_memcpy_builtin() to rewrite the tunnel inner packet 
> destination MAC address, somehow related?
> 
> [root@centos-dev bpf-next]# git bisect log
> git bisect start '--term-new=fixed' '--term-old=unfixed'
> # fixed: [b3a9e3b9622ae10064826dccb4f7a52bd88c7407] Linux 5.8-rc1
> git bisect fixed b3a9e3b9622ae10064826dccb4f7a52bd88c7407
> # unfixed: [3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162] Linux 5.7
> git bisect unfixed 3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162
> # fixed: [ee01c4d72adffb7d424535adf630f2955748fa8b] Merge branch 'akpm' 
> (patches from Andrew)
> git bisect fixed ee01c4d72adffb7d424535adf630f2955748fa8b
> # unfixed: [16d91548d1057691979de4686693f0ff92f46000] Merge tag 
> 'xfs-5.8-merge-8' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
> git bisect unfixed 16d91548d1057691979de4686693f0ff92f46000
> # fixed: [098205f3c688885394ed1f670a6a7cb4a58728a3] Merge branch '1GbE' of 
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
> git bisect fixed 098205f3c688885394ed1f670a6a7cb4a58728a3
> # fixed: [da1a782a7140fab22f2dfe8453d7b73c786d73de] net: ipa: kill 
> ipa_cmd_dma_task_32b_addr_add()
> git bisect fixed da1a782a7140fab22f2dfe8453d7b73c786d73de
> # unfixed: [aa8a6ee3e3fc4001e952de37660fe71826da8189] docs: networking: 
> convert team.txt to ReST
> git bisect unfixed aa8a6ee3e3fc4001e952de37660fe71826da8189
> # unfixed: [5b95dea31636ce93660930d16172fe75589b2e70] Merge branch 
> 'net-smc-extent-buffer-mapping-and-port-handling'
> git bisect unfixed 5b95dea31636ce93660930d16172fe75589b2e70
> # fixed: [3316d50905f0e551d4786767d827589960a8cb83] bnxt_en: Split HW ring 
> statistics strings into RX and TX parts.
> git bisect fixed 3316d50905f0e551d4786767d827589960a8cb83
> # fixed: [c321022244708aec4675de4f032ef1ba9ff0c640] selftests/bpf: Test 
> allowed maps for bpf_sk_select_reuseport
> git bisect fixed c321022244708aec4675de4f032ef1ba9ff0c640
> # fixed: [50325b1761e31ad17d252e795af72a9af8c5a7d7] bpftool: Expose 
> attach_type-to-string array to non-cgroup code
> git bisect fixed 50325b1761e31ad17d252e795af72a9af8c5a7d7
> # fixed: [8c1b2bf16d5944cd5c3a8a72e24ed9e22360c1af] bpf, cgroup: Remove 
> unused exports
> git bisect fixed 8c1b2bf16d5944cd5c3a8a72e24ed9e22360c1af
> # unfixed: [6f3f65d80dac8f2bafce2213005821fccdce194c] net: bpf: Allow TC 
> programs to call BPF_FUNC_skb_change_head
> git bisect unfixed 6f3f65d80dac8f2bafce2213005821fccdce194c
> # fixed: [6f8a57ccf8511724e6f48d732cb2940889789ab2] bpf: Make verifier log 
> more relevant by default
> git bisect fixed 6f8a57ccf8511724e6f48d732cb2940889789ab2
> # unfixed: [0a05861f80fe7d4dcfdabcc98d9854947573e072] xsk: Fix typo in 
> xsk_umem_consume_tx and xsk_generic_xmit comments
> git bisect unfixed 0a05861f80fe7d4dcfdabcc98d9854947573e072
> # unfixed: [71d19214776e61b33da48f7c1b46e522c7f78221] bpf: add 
> bpf_ktime_get_boot_ns()
> git bisect unfixed 71d19214776e61b33da48f7c1b46e522c7f78221
> # first fixed commit: [6f8a57ccf8511724e6f48d732cb2940889789ab2] bpf: Make 
> verifier log more relevant by default
> 
> 
> > >
> > > Thanks
> > >
> > > Vincent
> > >
> > 
> 



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux