All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Gabriele Monaco" <gmonaco@redhat.com>
Cc: linux-trace-kernel@vger.kernel.org, bpf@vger.kernel.org
Subject: Re: [PATCH v2 10/15] tools/rv: Add BPF monitors
Date: Thu, 01 Oct 2026 15:55:40 +0000	[thread overview]
Message-ID: <20261001155540.A4B081F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261001152042.124445-11-gmonaco@redhat.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] bpf: PER_TASK map leak via premature sched_process_exit cleanup
--

commit 9e1db08be07757261ff0e098cd3dda05c445d860
Author: Gabriele Monaco <gmonaco@redhat.com>

tools/rv: Add BPF monitors

This commit adds the code for two initial BPF monitors (queue and nohz) and
adapts the in-kernel da_monitor.h to share code and conditionally compile BPF
or kernel-specific components. It also integrates BPF monitor building into
the main rv Makefile.

> diff --git a/tools/verification/rv/bpf_monitors/da_monitor_bpf.h b/tools/verification/rv/bpf_monitors/da_monitor_bpf.h
> new file mode 100644
> index 0000000000000..12f0f78b9c9d3
> --- /dev/null
> +++ b/tools/verification/rv/bpf_monitors/da_monitor_bpf.h
[ ... ]
> +#if RV_MON_TYPE == RV_MON_PER_TASK
> +/*
> + * BPF Per-Task monitor - uses BPF hash map indexed by PID
> + *
> + * Just a special case of per-object monitor with API consistent with in-kernel
> + * monitors (no need to pass the id).
> + */
> +
> +#define da_get_monitor(tsk) da_get_monitor_bpf(BPF_CORE_READ(tsk, pid), tsk)
> +#define da_handle_event(tsk, event) \
> +	da_handle_event_bpf(BPF_CORE_READ(tsk, pid), tsk, event)
> +#define da_handle_start_event(tsk, event) \
> +	da_handle_start_event_bpf(BPF_CORE_READ(tsk, pid), tsk, event)
> +#define da_handle_start_run_event(tsk, event) \
> +	da_handle_start_run_event_bpf(BPF_CORE_READ(tsk, pid), tsk, event)
> +
> +typedef struct task_struct *monitor_target_bpf;
> +static inline void da_destroy_storage(da_id_type id);
> +
> +SEC("tp_btf/sched_process_exit")
> +int BPF_PROG(handle_obj_cleanup, struct task_struct *p, bool group_dead)
> +{
> +	da_destroy_storage(p->pid);
> +	return 0;
> +}

[Severity: Medium]
Could this lead to a map leak if trace events occur during task teardown after
sched_process_exit?

If an active PER_TASK monitor traces an event that occurs in do_exit() after
sched_process_exit has already executed (for example, sched_dequeue, page
faults, or other events in exit_mm() or schedule()), the event handler will
call da_handle_start_event_bpf(). This function recreates the map element via
da_create_storage().

Since handle_obj_cleanup has already run for this task, the newly recreated
map element will never be deleted. Over time, this could exhaust the BPF map,
and a future task reusing the same PID could inherit this stale automaton
state.

Would it be safer to attach this cleanup routine to sched_process_free
instead, ensuring the storage is only destroyed when the task struct is
actually being freed?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261001152042.124445-1-gmonaco@redhat.com?part=10

  reply	other threads:[~2026-10-01 15:55 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01 15:20 [PATCH v2 00/15] rv: Add support for BPF monitors Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 01/15] sched: Add task enqueue/dequeue trace points Gabriele Monaco
2026-10-01 15:49   ` Peter Zijlstra
2026-10-02  7:09     ` Gabriele Monaco
2026-10-02 10:29       ` Peter Zijlstra
2026-10-02 11:55         ` Gabriele Monaco
2026-10-02 19:18           ` Peter Zijlstra
2026-10-02 19:40             ` Gabriele Monaco
2026-10-04  7:57             ` Steven Rostedt
2026-10-04  7:45         ` Steven Rostedt
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 02/15] tools/rv: Skip empty pid error in selftest if command failed Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 03/15] rv: Refactor da_trace() functions to get strings internally Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 04/15] rv: Cast result of model_get_*_name() Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 05/15] tools/rv: Move argument parsing from in_kernel to utils Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 06/15] tools/build: Add a feature test for bpftool-btf Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 07/15] tools/rv: Implement BPF monitor discovery and listing Gabriele Monaco
2026-10-01 15:40   ` sashiko-bot
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 08/15] tools/rv: Implement BPF monitor loading and tracing Gabriele Monaco
2026-10-01 15:41   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 09/15] tools/rv: Copy stripped bpf_atomic.h from libarena Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-07 12:59   ` Nam Cao
2026-10-08  9:00     ` Gabriele Monaco
2026-10-08 11:16       ` Nam Cao
2026-10-09 10:09         ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 10/15] tools/rv: Add BPF monitors Gabriele Monaco
2026-10-01 15:55   ` sashiko-bot [this message]
2026-10-02  0:43   ` bot+bpf-ci
2026-10-06 13:29   ` Alexei Starovoitov
2026-10-08  9:54     ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 11/15] tools/rv: Define CONFIG_X86_64 statically for " Gabriele Monaco
2026-10-01 15:49   ` sashiko-bot
2026-10-01 15:20 ` [PATCH v2 12/15] tools/rv: Add reactors support to " Gabriele Monaco
2026-10-01 15:57   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 13/15] verification/rvgen: Add support for " Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 14/15] tools/rv: Add selftest for rv bpf monitors Gabriele Monaco
2026-10-01 16:03   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 15/15] verification/rvgen: Add selftest for rvgen -b Gabriele Monaco

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=20261001155540.A4B081F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=gmonaco@redhat.com \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=sashiko-reviews@lists.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.