All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kyle Huey <me@kylehuey.com>
To: Kyle Huey <khuey@kylehuey.com>,
	linux-kernel@vger.kernel.org,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>,
	Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	Marco Elver <elver@google.com>,
	Yonghong Song <yonghong.song@linux.dev>
Cc: Robert O'Callahan <robert@ocallahan.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-perf-users@vger.kernel.org, bpf@vger.kernel.org
Subject: [PATCH v3 3/4] perf/bpf: Allow a bpf program to suppress all sample side effects
Date: Sun, 10 Dec 2023 20:55:42 -0800	[thread overview]
Message-ID: <20231211045543.31741-4-khuey@kylehuey.com> (raw)
In-Reply-To: <20231211045543.31741-1-khuey@kylehuey.com>

Returning zero from a bpf program attached to a perf event already
suppresses any data output. Return early from __perf_event_overflow() in
this case so it will also suppress event_limit accounting, SIGTRAP
generation, and F_ASYNC signalling.

Signed-off-by: Kyle Huey <khuey@kylehuey.com>
---
 kernel/events/core.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 54f6372d2634..d6093fe893c8 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -9541,6 +9541,11 @@ static int __perf_event_overflow(struct perf_event *event,
 
 	ret = __perf_event_account_interrupt(event, throttle);
 
+#ifdef CONFIG_BPF_SYSCALL
+	if (event->prog && !bpf_overflow_handler(event, data, regs))
+		return ret;
+#endif
+
 	/*
 	 * XXX event_limit might not quite work as expected on inherited
 	 * events
@@ -9590,10 +9595,7 @@ static int __perf_event_overflow(struct perf_event *event,
 		irq_work_queue(&event->pending_irq);
 	}
 
-#ifdef CONFIG_BPF_SYSCALL
-	if (!(event->prog && !bpf_overflow_handler(event, data, regs)))
-#endif
-		READ_ONCE(event->overflow_handler)(event, data, regs);
+	READ_ONCE(event->overflow_handler)(event, data, regs);
 
 	if (*perf_event_fasync(event) && event->pending_kill) {
 		event->pending_wakeup = 1;
-- 
2.34.1


  parent reply	other threads:[~2023-12-11  4:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11  4:55 [PATCH v3 0/4] Combine perf and bpf for fast eval of hw breakpoint conditions Kyle Huey
2023-12-11  4:55 ` [PATCH v3 1/4] perf/bpf: Call bpf handler directly, not through overflow machinery Kyle Huey
2023-12-11 14:20   ` Marco Elver
2023-12-11 15:20     ` Kyle Huey
2024-01-02 22:56   ` Song Liu
2024-01-02 23:05   ` Song Liu
2024-01-19  0:07     ` Kyle Huey
2023-12-11  4:55 ` [PATCH v3 2/4] perf/bpf: Remove unneeded uses_default_overflow_handler Kyle Huey
2023-12-11  4:55   ` Kyle Huey
2023-12-12  9:22   ` Will Deacon
2023-12-12  9:22     ` Will Deacon
2024-01-02 22:56     ` Song Liu
2024-01-02 22:56       ` Song Liu
2023-12-11  4:55 ` Kyle Huey [this message]
2024-01-02 23:10   ` [PATCH v3 3/4] perf/bpf: Allow a bpf program to suppress all sample side effects Song Liu
2023-12-11  4:55 ` [PATCH v3 4/4] selftest/bpf: Test a perf bpf program that suppresses " Kyle Huey
2024-01-02 22:49   ` Song Liu
2024-01-19  0:08     ` Kyle Huey
2023-12-13  1:38 ` [PATCH v3 0/4] Combine perf and bpf for fast eval of hw breakpoint conditions Namhyung Kim

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=20231211045543.31741-4-khuey@kylehuey.com \
    --to=me@kylehuey.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=elver@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=khuey@kylehuey.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=robert@ocallahan.org \
    --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.