From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 499643858D28; Fri, 22 Mar 2024 10:33:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 499643858D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1711103609; bh=Vo0Y5I6qm7++KMVaizjScIwqwe9oki1Oyb5CG8pE79Y=; h=From:To:Subject:Date:From; b=LYDHdQwbGQSCFo/RZsyZuviugcjszyk8Hy89mvozVhCvaRBRjFREa1ahvMMFGrrDb qoiP9p0Mm6YG+FGhBCQYSQqLz6p9swfOq53urJ+buT6ZMmM6KzYXppbOd8isPbaWZt dpqrUxO41nWbpg99fflznxynqvTkLmhNVn5lxGpM= From: "jemarch at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/114431] New: bpf: GCC generates unverifiable code for systemd restrict_fs_bpf Date: Fri, 22 Mar 2024 10:33:28 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jemarch at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114431 Bug ID: 114431 Summary: bpf: GCC generates unverifiable code for systemd restrict_fs_bpf Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jemarch at gcc dot gnu.org Target Milestone: --- GCC generates unverifiable code for systemd restrict_fs_bpf and the kernel verifier complains with the error log below. The corresponding systemd iss= ue is https://github.com/systemd/systemd/issues/31888. M=C3=A4r 21 11:01:44 H systemd[1]: bpf-firewall: Got EBADF when using BPF_F_ALLOW_MULTI, which indicates it is supported. Yay! M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping section(3) .data (= size 0) M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping unrecognized data section(9) .comment M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'sd_bind4': failed to attac= h to cgroup: Bad file descriptor M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping section(3) .data (= size 0) M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping unrecognized data section(10) .comment M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'sd_restrictif_e': BPF prog= ram load failed: Permission denied M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'sd_restrictif_e': -- BEGIN= PROG LOAD LOG -- M=C3=A4r 21 11:01:44 H systemd[1]: 0: R1=3Dctx(off=3D0,imm=3D0) R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 0: (61) r0 =3D *(u32 *)(r1 +40) ; R0_w=3Dscalar(smin=3D0,smax=3Dumax=3D4294967295,var_off=3D(0x0; 0xffffffff)) R1=3Dctx(off=3D0,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 1: (bf) r2 =3D r10 = ; R2_w=3Dfp0 R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 2: (18) r1 =3D 0xffff992d011eec00 ; R1_w=3Dmap_ptr(off=3D0,ks=3D4,vs=3D1,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 4: (07) r2 +=3D -4 = ; R2_w=3Dfp-4 M=C3=A4r 21 11:01:44 H systemd[1]: 5: (63) *(u32 *)(r10 -4) =3D r0 ; R0_w=3Dscalar(smin=3D0,smax=3Dumax=3D4294967295,var_off=3D(0x0; 0xffffffff)= ) R10=3Dfp0 fp-8=3Dmmmm???? M=C3=A4r 21 11:01:44 H systemd[1]: 6: (85) call bpf_map_lookup_elem#1 ; R0_w=3Dmap_value_or_null(id=3D1,off=3D0,ks=3D4,vs=3D1,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 7: (18) r1 =3D 0xffffbf18005c2000 ; R1_w=3Dmap_value(off=3D0,ks=3D4,vs=3D1,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 9: (69) r3 =3D *(u16 *)(r1 +0) M=C3=A4r 21 11:01:44 H systemd[1]: invalid access to map value, value_size= =3D1 off=3D0 size=3D2 M=C3=A4r 21 11:01:44 H systemd[1]: R1 min value is outside of the allowed m= emory range M=C3=A4r 21 11:01:44 H systemd[1]: processed 8 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 M=C3=A4r 21 11:01:44 H systemd[1]: -- END PROG LOAD LOG -- M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'sd_restrictif_e': failed t= o load: -13 M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: failed to load object 'restrict_ifaces_bpf' M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: failed to load BPF skeleton 'restrict_ifaces_bpf': -13 M=C3=A4r 21 11:01:44 H systemd[1]: restrict-interfaces: Failed to load BPF = object: Permission denied M=C3=A4r 21 11:01:44 H systemd[1]: restrict-interfaces: Failed to load BPF = object: Permission denied M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'cpu' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'cpuacct' supported: no M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'cpuset' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'io' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'blkio' supported: no M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'memory' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'devices' supported: no M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'pids' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'bpf-firewall' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'bpf-devices' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'bpf-foreign' supported: yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'bpf-socket-bind' supported: = yes M=C3=A4r 21 11:01:44 H systemd[1]: Controller 'bpf-restrict-network-interfa= ces' supported: no M=C3=A4r 21 11:01:44 H systemd[1]: Set up TFD_TIMER_CANCEL_ON_SET timerfd. M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping section(3) .data (= size 0) M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: elf: skipping unrecognized data section(8) .comment M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'restrict_filesystems': mis= sing .BTF.ext function info for the main program, skipping all of .BTF.ext func info. M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'restrict_filesystems': mis= sing .BTF.ext line info for the main program, skipping all of .BTF.ext line info. M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'restrict_filesystems': BPF= program load failed: Permission denied M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'restrict_filesystems': -- = BEGIN PROG LOAD LOG -- M=C3=A4r 21 11:01:44 H systemd[1]: 0: R1=3Dctx(off=3D0,imm=3D0) R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 0: (62) *(u32 *)(r10 -20) =3D 0 = ; R10=3Dfp0 fp-24=3D0000???? M=C3=A4r 21 11:01:44 H systemd[1]: 1: (bf) r0 =3D r1 ; R0_w=3Dctx(off=3D0,imm=3D0) R1=3Dctx(off=3D0,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 2: (79) r1 =3D *(u64 *)(r1 +8) ; R1_w=3Dscalar() M=C3=A4r 21 11:01:44 H systemd[1]: 3: (79) r3 =3D *(u64 *)(r0 +0) M=C3=A4r 21 11:01:44 H systemd[1]: func 'bpf_lsm_file_open' arg0 has btf_id= 651 type STRUCT 'file' M=C3=A4r 21 11:01:44 H systemd[1]: 4: R0_w=3Dctx(off=3D0,imm=3D0) R3_w=3Dtrusted_ptr_file(off=3D0,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 4: (67) r1 <<=3D 32 ; R1_w=3Dscalar(smax=3D9223372032559808512,umax=3D18446744069414584320,smin32= =3D0,smax32=3Dumax32=3D0,var_off=3D(0x0; 0xffffffff00000000)) M=C3=A4r 21 11:01:44 H systemd[1]: 5: (bf) r6 =3D r1 ; R1_w=3Dscalar(id=3D1,smax=3D9223372032559808512,umax=3D18446744069414584320= ,smin32=3D0,smax32=3Dumax32=3D0,var_off=3D(0x0; 0xffffffff00000000)) R6_w=3Dscalar(id=3D1,smax=3D9223372032559808512,umax=3D18446744069414584320= ,smin32=3D0,smax32=3Dumax32=3D0,var_off=3D(0x0; 0xffffffff00000000)) M=C3=A4r 21 11:01:44 H systemd[1]: 6: (c7) r6 s>>=3D 32 ; R6_w=3Dscalar(smin=3D-2147483648,smax=3D2147483647) M=C3=A4r 21 11:01:44 H systemd[1]: 7: (55) if r1 !=3D 0x0 goto pc+49 = ; R1_w=3D0 M=C3=A4r 21 11:01:44 H systemd[1]: 8: (b7) r2 =3D 168 = ; R2_w=3D168 M=C3=A4r 21 11:01:44 H systemd[1]: 9: (bf) r1 =3D r10 = ; R1_w=3Dfp0 R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 10: (0f) r3 +=3D r2 = ; R2_w=3D168 R3_w=3Dtrusted_ptr_file(off=3D168,imm=3D0) M=C3=A4r 21 11:01:44 H systemd[1]: 11: (07) r1 +=3D -8 = ; R1_w=3Dfp-8 M=C3=A4r 21 11:01:44 H systemd[1]: 12: (b7) r2 =3D 8 = ; R2_w=3D8 M=C3=A4r 21 11:01:44 H systemd[1]: 13: (85) call bpf_probe_read_kernel#113 = ; R0=3Dscalar() fp-8=3Dmmmmmmmm M=C3=A4r 21 11:01:44 H systemd[1]: 14: (b7) r4 =3D 40 = ; R4_w=3D40 M=C3=A4r 21 11:01:44 H systemd[1]: 15: (b7) r2 =3D 8 = ; R2_w=3D8 M=C3=A4r 21 11:01:44 H systemd[1]: 16: (79) r3 =3D *(u64 *)(r10 -8) ; R3_w=3Dscalar() R10=3Dfp0 fp-8=3Dmmmmmmmm M=C3=A4r 21 11:01:44 H systemd[1]: 17: (bf) r1 =3D r10 = ; R1_w=3Dfp0 R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 18: (0f) r3 +=3D r4 ; R3_w=3Dscalar() R4_w=3D40 M=C3=A4r 21 11:01:44 H systemd[1]: 19: (07) r1 +=3D -8 = ; R1_w=3Dfp-8 M=C3=A4r 21 11:01:44 H systemd[1]: 20: (85) call bpf_probe_read_kernel#113 = ; R0_w=3Dscalar() fp-8=3Dmmmmmmmm M=C3=A4r 21 11:01:44 H systemd[1]: 21: (b7) r5 =3D 96 = ; R5_w=3D96 M=C3=A4r 21 11:01:44 H systemd[1]: 22: (b7) r2 =3D 8 = ; R2_w=3D8 M=C3=A4r 21 11:01:44 H systemd[1]: 23: (79) r3 =3D *(u64 *)(r10 -8) ; R3_w=3Dscalar() R10=3Dfp0 fp-8=3Dmmmmmmmm M=C3=A4r 21 11:01:44 H systemd[1]: 24: (bf) r1 =3D r10 = ; R1_w=3Dfp0 R10=3Dfp0 M=C3=A4r 21 11:01:44 H systemd[1]: 25 M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: prog 'restrict_filesystems': fai= led to load: -13 M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: failed to load object 'restrict_= fs_bpf' M=C3=A4r 21 11:01:44 H systemd[1]: libbpf: failed to load BPF skeleton 'restrict_fs_bpf': -13 M=C3=A4r 21 11:01:44 H systemd[1]: bpf-lsm: Failed to load BPF object: Perm= ission denied=