From: Jiri Olsa <olsajiri@gmail.com>
To: Samuel Wu <wusamuel@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Andrii Nakryiko <andrii@kernel.org>,
Eduard Zingerman <eddyz87@gmail.com>,
Ihor Solodrai <ihor.solodrai@linux.dev>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
Emil Tsalapatis <emil@etsalapatis.com>,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Bill Wendling <morbo@google.com>,
Justin Stitt <justinstitt@google.com>,
kernel-team@android.com, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org,
bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
llvm@lists.linux.dev
Subject: Re: [PATCH bpf-next v2 4/6] libbpf: Resolve typeless ksyms via KALLSYMS_QUERY ioctl
Date: Mon, 26 Oct 2026 10:28:20 +0100 [thread overview]
Message-ID: <at8dNNb4vwovNZcZ@krava> (raw)
In-Reply-To: <20261023001603.560210-12-wusamuel@google.com>
On Thu, Oct 22, 2026 at 05:16:05PM -0700, Samuel Wu wrote:
SNIP
> +static int bpf_object__query_ksyms(struct bpf_object *obj)
> +{
> + struct kallsyms_query q;
> + struct extern_desc *ext;
> + int err = 0;
> + int fd;
> + int i;
> +
> + fd = open("/proc/kallsyms", O_RDONLY | O_CLOEXEC);
> + if (fd < 0)
> + return -errno;
> +
> + for (i = 0; i < obj->nr_extern; i++) {
> + ext = &obj->externs[i];
> + if (ext->type != EXT_KSYM || ext->ksym.type_id)
> + continue;
> +
> + q = (struct kallsyms_query){
> + .size = sizeof(q),
> + .query_flags = KALLSYMS_QUERY_BY_SYMBOL,
> + .sym_name_addr = ptr_to_u64(ext->name),
> + };
> +
> + err = -errno;
> + if (err == -ENOENT) {
> + err = 0;
> + continue;
> + }
> + if (err == -EADDRNOTAVAIL)
> + pr_warn("extern (ksym) '%s': resolution is ambiguous\n",
> + ext->name);
> + break;
> + }
> + ext->is_set = true;
> + ext->ksym.addr = q.sym_addr;
> + pr_debug("extern (ksym) '%s': resolved in kernel to 0x%llx\n",
> + ext->name, ext->ksym.addr);
> + }
> + close(fd);
> + return err;
> +}
> +
> +static int bpf_object__resolve_typeless_ksyms(struct bpf_object *obj)
> {
> + int err;
> +
> + err = bpf_object__query_ksyms(obj);
hi,
we could also add similar support for libbpf_available_kallsyms_parse and
probably in some other places like bpf_get_ksyms.. which makes me think it
could be useful to have KALLSYMS_QUERY support for multiple symbols
thanks,
jirka
> + /*
> + * Fall back to parsing /proc/kallsyms only if the ioctl is not
> + * accessible: not present (-ENOTTY on older kernels) or kallsyms
> + * addresses hidden from this opener (-EPERM, e.g. kptr_restrict).
> + */
> + if (err != -ENOTTY && err != -EPERM)
> + return err;
> +
> + pr_debug("KALLSYMS_QUERY unavailable (%s), falling back to /proc/kallsyms\n",
> + errstr(err));
> return libbpf_kallsyms_parse(kallsyms_cb, obj);
> }
>
> @@ -9922,7 +9996,7 @@ static int bpf_object__resolve_externs(struct bpf_object *obj,
> return -EINVAL;
> }
> if (need_kallsyms) {
> - err = bpf_object__read_kallsyms_file(obj);
> + err = bpf_object__resolve_typeless_ksyms(obj);
> if (err)
> return -EINVAL;
> }
> --
> 2.56.0.257.gf7497c7d27-goog
>
next prev parent reply other threads:[~2026-10-26 9:28 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 0:16 [PATCH bpf-next v2 0/6] kallsyms: Add KALLSYMS_QUERY ioctl to /proc/kallsyms Samuel Wu
2026-10-23 0:16 ` [PATCH bpf-next v2 1/6] " Samuel Wu
2026-10-23 0:51 ` bot+bpf-ci
2026-10-27 21:31 ` Samuel Wu
2026-10-25 23:29 ` Randy Dunlap
2026-10-27 21:33 ` Samuel Wu
2026-10-27 22:24 ` Andrii Nakryiko
2026-10-29 21:58 ` Samuel Wu
2026-10-29 22:09 ` Andrii Nakryiko
2026-10-29 22:35 ` Samuel Wu
2026-10-29 22:54 ` Andrii Nakryiko
2026-10-30 0:23 ` Samuel Wu
2026-10-28 13:40 ` David Laight
2026-10-29 22:05 ` Samuel Wu
2026-10-29 22:16 ` Andrii Nakryiko
2026-10-30 0:28 ` Samuel Wu
2026-10-23 0:16 ` [PATCH bpf-next v2 2/6] tools: Copy KALLSYMS_QUERY definitions to linux/fs.h Samuel Wu
2026-10-23 0:16 ` [PATCH bpf-next v2 3/6] docs/procfs: Document KALLSYMS_QUERY ioctl on /proc/kallsyms Samuel Wu
2026-10-23 0:16 ` [PATCH bpf-next v2 4/6] libbpf: Resolve typeless ksyms via KALLSYMS_QUERY ioctl Samuel Wu
2026-10-23 0:51 ` bot+bpf-ci
2026-10-27 21:45 ` Samuel Wu
2026-10-26 9:28 ` Jiri Olsa [this message]
2026-10-27 22:07 ` Samuel Wu
2026-10-28 14:01 ` David Laight
2026-10-29 21:35 ` Samuel Wu
2026-10-29 22:33 ` David Laight
2026-10-23 0:16 ` [PATCH bpf-next v2 5/6] selftests/bpf: Test typeless module ksym resolution Samuel Wu
2026-10-23 0:16 ` [PATCH bpf-next v2 6/6] selftests/proc: Add KALLSYMS_QUERY tests Samuel Wu
2026-10-23 0:25 ` sashiko-bot
2026-10-27 21:36 ` Samuel Wu
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=at8dNNb4vwovNZcZ@krava \
--to=olsajiri@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=ihor.solodrai@linux.dev \
--cc=jack@suse.cz \
--cc=justinstitt@google.com \
--cc=kernel-team@android.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
--cc=song@kernel.org \
--cc=viro@zeniv.linux.org.uk \
--cc=wusamuel@google.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.