Thread (4 messages) 4 messages, 2 authors, 2022-11-02

Re: [PATCH] [perf/core: Update sample_flags for raw_data in perf_output_sample

From: Athira Rajeev <hidden>
Date: 2022-11-02 08:20:07
Also in: linux-perf-users, lkml

On 20-Oct-2022, at 8:10 PM, Peter Zijlstra [off-list ref] wrote:

On Thu, Oct 20, 2022 at 12:36:56PM +0530, Athira Rajeev wrote:
quoted
commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
added check for PERF_SAMPLE_RAW in sample_flags in
perf_prepare_sample(). But while copying the sample in memory,
the check for sample_flags is not added in perf_output_sample().
Fix adds the same in perf_output_sample as well.

Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
Signed-off-by: Athira Rajeev <redacted>
---
kernel/events/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 4ec3717003d5..daf387c75d33 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -7099,7 +7099,7 @@ void perf_output_sample(struct perf_output_handle *handle,
	if (sample_type & PERF_SAMPLE_RAW) {
		struct perf_raw_record *raw = data->raw;

-		if (raw) {
+		if (raw && (data->sample_flags & PERF_SAMPLE_RAW)) {
			struct perf_raw_frag *frag = &raw->frag;

			perf_output_put(handle, raw->size);
Urgh.. something smells here. We already did a PERF_SAMPLE_RAW test.

And perf_prepare_sample() explicitly makes data->raw be NULL when not
set earlier.

So what's going wrong?
Hi Peter,

Sorry for late response. I was out on vacation couple of days.

I didn't hit any specific issue or fail with current code. But patch intention was
to keep the perf_prepare_sample and perf_output_sample to be in sync with the checks that we
are doing.

Thanks
Athira
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help