linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrii Nakryiko <andrii.nakryiko@gmail.com>
To: Andi Kleen <ak@linux.intel.com>
Cc: Andrii Nakryiko <andrii@kernel.org>,
	bpf@vger.kernel.org, linux-mm@kvack.org,
	 akpm@linux-foundation.org, adobriyan@gmail.com,
	shakeel.butt@linux.dev,  hannes@cmpxchg.org, osandov@osandov.com,
	song@kernel.org, jannh@google.com,
	 linux-fsdevel@vger.kernel.org, willy@infradead.org
Subject: Re: [PATCH v5 bpf-next 09/10] bpf: wire up sleepable bpf_get_stack() and bpf_get_task_stack() helpers
Date: Mon, 12 Aug 2024 20:11:51 -0700	[thread overview]
Message-ID: <CAEf4BzbNdOUv5iUbkmw0n2uUWK78kUcbjs92pJc1EhGHqscGGA@mail.gmail.com> (raw)
In-Reply-To: <ZrqxXfZE5bFy-5qv@tassilo>

On Mon, Aug 12, 2024 at 6:05 PM Andi Kleen <ak@linux.intel.com> wrote:
>
> On Mon, Aug 12, 2024 at 05:29:31PM -0700, Andrii Nakryiko wrote:
> > Add sleepable implementations of bpf_get_stack() and
> > bpf_get_task_stack() helpers and allow them to be used from sleepable
> > BPF program (e.g., sleepable uprobes).
>
> Is missing the header actually a real problem you saw?

It's hard to quantify this from production data, because there are
multiple possible reasons to fail to get build ID in BPF program. All
of which will result in "no build ID" condition.

But more generally speaking, failure to read some piece of memory from
non-sleepable BPF programs is a real problem for a meaningful
percentage of cases, so being able to do that more reliably in
sleepable context is important.

In this case, given this build ID fetching code is used from
PROCMAP_QUERY ioctl() on top of /proc/<pid>/maps, it's good to have a
guarantee that if underlying file is a proper ELF file with valid
build ID, that API will return it. It allows applications to avoid
overhead of retrying it through other less reliable and more
cumbersome means.

>
> I presume the user tools do have a fallback to read the
> build by themselves if it happens
>

It's all best effort, strictly speaking, but the percentage of
successful cases matters across the entire fleet, so anything that can
be done to improve the success rate is helpful. Retrying is possible,
but comes with extra complications, which are not always acceptable.
E.g., it's just racy (application might exit by the time we retry), or
will require extra privileges (because user space will be accessing
entire ELF file contents), etc.

  reply	other threads:[~2024-08-13  3:12 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-13  0:29 [PATCH v5 bpf-next 00/10] Harden and extend ELF build ID parsing logic Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 01/10] lib/buildid: harden " Andrii Nakryiko
2024-08-13  0:52   ` Andi Kleen
2024-08-13  3:06     ` Andrii Nakryiko
2024-08-13 20:59   ` Jann Horn
2024-08-13 23:21     ` Andrii Nakryiko
2024-08-14 16:13       ` Jann Horn
2024-08-14 17:06         ` Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 02/10] lib/buildid: add single folio-based file reader abstraction Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 03/10] lib/buildid: take into account e_phoff when fetching program headers Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 04/10] lib/buildid: remove single-page limit for PHDR search Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 05/10] lib/buildid: rename build_id_parse() into build_id_parse_nofault() Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 06/10] lib/buildid: implement sleepable build_id_parse() API Andrii Nakryiko
2024-08-13 17:26   ` Shakeel Butt
2024-08-13  0:29 ` [PATCH v5 bpf-next 07/10] lib/buildid: don't limit .note.gnu.build-id to the first page in ELF Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 08/10] bpf: decouple stack_map_get_build_id_offset() from perf_callchain_entry Andrii Nakryiko
2024-08-13  0:29 ` [PATCH v5 bpf-next 09/10] bpf: wire up sleepable bpf_get_stack() and bpf_get_task_stack() helpers Andrii Nakryiko
2024-08-13  1:05   ` Andi Kleen
2024-08-13  3:11     ` Andrii Nakryiko [this message]
2024-08-13  0:29 ` [PATCH v5 bpf-next 10/10] selftests/bpf: add build ID tests Andrii Nakryiko
2024-08-13  1:05   ` Andi Kleen

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=CAEf4BzbNdOUv5iUbkmw0n2uUWK78kUcbjs92pJc1EhGHqscGGA@mail.gmail.com \
    --to=andrii.nakryiko@gmail.com \
    --cc=adobriyan@gmail.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=jannh@google.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=osandov@osandov.com \
    --cc=shakeel.butt@linux.dev \
    --cc=song@kernel.org \
    --cc=willy@infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).