[PATCH] perf: remove PERF_SAMPLE_RAW

From: Peter Zijlstra
Date: Thu Aug 27 2009 - 04:19:24 EST


seems I forgot lkml...

---
Apparently people think trace-events became an ABI the moment perf
exported them, regardless what the text surrounding PERF_SAMPLE_RAW said
about the opaqueness of the data provided.

I'm not willing to make anything trace related into an ABI, hence remove
this.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
---
include/linux/perf_counter.h | 17 +----------------
kernel/perf_counter.c | 36 ------------------------------------
2 files changed, 1 insertions(+), 52 deletions(-)

diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
index 972f90d..1056676 100644
--- a/include/linux/perf_counter.h
+++ b/include/linux/perf_counter.h
@@ -121,9 +121,8 @@ enum perf_counter_sample_format {
PERF_SAMPLE_CPU = 1U << 7,
PERF_SAMPLE_PERIOD = 1U << 8,
PERF_SAMPLE_STREAM_ID = 1U << 9,
- PERF_SAMPLE_RAW = 1U << 10,

- PERF_SAMPLE_MAX = 1U << 11, /* non-ABI */
+ PERF_SAMPLE_MAX = 1U << 10, /* non-ABI */
};

/*
@@ -383,20 +382,6 @@ enum perf_event_type {
*
* { u64 nr,
* u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN
- *
- * #
- * # The RAW record below is opaque data wrt the ABI
- * #
- * # That is, the ABI doesn't make any promises wrt to
- * # the stability of its content, it may vary depending
- * # on event, hardware, kernel version and phase of
- * # the moon.
- * #
- * # In other words, PERF_SAMPLE_RAW contents are not an ABI.
- * #
- *
- * { u32 size;
- * char data[size];}&& PERF_SAMPLE_RAW
* };
*/
PERF_EVENT_SAMPLE = 9,
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c
index 53abcbe..e72ba84 100644
--- a/kernel/perf_counter.c
+++ b/kernel/perf_counter.c
@@ -2935,18 +2935,6 @@ void perf_counter_output(struct perf_counter *counter, int nmi,
header.size += sizeof(u64);
}

- if (sample_type & PERF_SAMPLE_RAW) {
- int size = sizeof(u32);
-
- if (data->raw)
- size += data->raw->size;
- else
- size += sizeof(u32);
-
- WARN_ON_ONCE(size & (sizeof(u64)-1));
- header.size += size;
- }
-
ret = perf_output_begin(&handle, counter, header.size, nmi, 1);
if (ret)
return;
@@ -2992,22 +2980,6 @@ void perf_counter_output(struct perf_counter *counter, int nmi,
}
}

- if (sample_type & PERF_SAMPLE_RAW) {
- if (data->raw) {
- perf_output_put(&handle, data->raw->size);
- perf_output_copy(&handle, data->raw->data, data->raw->size);
- } else {
- struct {
- u32 size;
- u32 data;
- } raw = {
- .size = sizeof(u32),
- .data = 0,
- };
- perf_output_put(&handle, raw);
- }
- }
-
perf_output_end(&handle);
}

@@ -3966,14 +3938,6 @@ static void tp_perf_counter_destroy(struct perf_counter *counter)

static const struct pmu *tp_perf_counter_init(struct perf_counter *counter)
{
- /*
- * Raw tracepoint data is a severe data leak, only allow root to
- * have these.
- */
- if ((counter->attr.sample_type & PERF_SAMPLE_RAW) &&
- !capable(CAP_SYS_ADMIN))
- return ERR_PTR(-EPERM);
-
if (ftrace_profile_enable(counter->attr.config))
return NULL;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/