From: Eduard Zingerman <eddyz87@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org,
daniel@iogearbox.net, martin.lau@linux.dev, kernel-team@fb.com,
yonghong.song@linux.dev, cnitlrt@gmail.com
Subject: Re: [PATCH bpf-next v2 2/2] selftests/bpf: test for malformed BPF_CORE_TYPE_ID_LOCAL relocation
Date: Wed, 21 Aug 2024 21:39:24 -0700 [thread overview]
Message-ID: <b058840690d79648405839c2af767a783a41bef8.camel@gmail.com> (raw)
In-Reply-To: <CAEf4BzaVjrHSi9eh9-YP37tsH2B5n0ah3m290Y7_v6zBXrEBiw@mail.gmail.com>
On Wed, 2024-08-21 at 21:29 -0700, Andrii Nakryiko wrote:
[...]
> > + btf_fd = bpf_btf_load(&raw_btf, sizeof(raw_btf), &opts);
> > + saved_errno = errno;
> > + if (btf_fd < 0 || env.verbosity > VERBOSE_NORMAL) {
> > + printf("-------- BTF load log start --------\n");
> > + printf("%s", log);
> > + printf("-------- BTF load log end ----------\n");
> > + }
> > + if (btf_fd < 0) {
> > + PRINT_FAIL("bpf_btf_load() failed, errno=%d\n", saved_errno);
> > + return;
> > + }
> > +
> > + memset(log, 0, sizeof(log));
>
> generally speaking there is no need to memset log buffer (maybe just a
> first byte, to be safe)
Will change.
> on the other hand, just `union bpf_attr attr = {};` is breakage
> waiting to happen, I'd do memset(0) on that, we did run into problems
> with that before (I believe it was systemd)
Compilers optimize out 'smth = {}' where 'smth' escapes?
I mean, I will change it to memset(0), but the fact that you observed
such behaviour is disturbing beyond limit...
I already run into gcc vs clang behaviour differences for the first
iteration of this test where I had:
union bpf_attr {
.prog_type = ...
};
clang did not zero out all members of the union, while gcc did.
> > + attr.prog_btf_fd = btf_fd;
> > + attr.prog_type = BPF_TRACE_RAW_TP;
> > + attr.license = (__u64)"GPL";
> > + attr.insns = (__u64)&insns;
> > + attr.insn_cnt = sizeof(insns) / sizeof(*insns);
> > + attr.log_buf = (__u64)log;
> > + attr.log_size = sizeof(log);
> > + attr.log_level = log_level;
> > + attr.func_info = (__u64)funcs;
> > + attr.func_info_cnt = sizeof(funcs) / sizeof(*funcs);
> > + attr.func_info_rec_size = sizeof(*funcs);
> > + attr.core_relos = (__u64)relos;
> > + attr.core_relo_cnt = sizeof(relos) / sizeof(*relos);
> > + attr.core_relo_rec_size = sizeof(*relos);
>
> I was wondering for a bit why you didn't just use bpf_prog_load(), and
> it seems like it's due to core_relos fields?
Yes, it is in commit message :)
> I don't see why we can't extend the bpf_prog_load() API to allow to
> specify those. (would allow to avoid open-coding this whole bpf_attr
> business, but it's fine as is as well)
Maybe extend API as a followup?
The test won't change much, just options instead of bpf_attr.
[...]
next prev parent reply other threads:[~2024-08-22 4:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-22 0:18 [PATCH bpf-next v2 0/2] bpf: fix null pointer access for malformed BPF_CORE_TYPE_ID_LOCAL relos Eduard Zingerman
2024-08-22 0:18 ` [PATCH bpf-next v2 1/2] bpf: correctly handle " Eduard Zingerman
2024-08-22 4:29 ` Andrii Nakryiko
2024-08-22 0:18 ` [PATCH bpf-next v2 2/2] selftests/bpf: test for malformed BPF_CORE_TYPE_ID_LOCAL relocation Eduard Zingerman
2024-08-22 4:29 ` Andrii Nakryiko
2024-08-22 4:39 ` Eduard Zingerman [this message]
2024-08-22 16:51 ` Andrii Nakryiko
2024-08-22 16:55 ` Alexei Starovoitov
2024-08-22 17:27 ` Andrii Nakryiko
2024-08-22 17:53 ` Alexei Starovoitov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b058840690d79648405839c2af767a783a41bef8.camel@gmail.com \
--to=eddyz87@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=cnitlrt@gmail.com \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=martin.lau@linux.dev \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox