summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-util/perf/perf-6.18.5-no-compressed2.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/dev-util/perf/perf-6.18.5-no-compressed2.patch b/dev-util/perf/perf-6.18.5-no-compressed2.patch
new file mode 100644
index 0000000..7286090
--- /dev/null
+++ b/dev-util/perf/perf-6.18.5-no-compressed2.patch
@@ -0,0 +1,60 @@
+reverted:
+--- perf/builtin-record.c
++++ perf/builtin-record.c
+@@ -650,27 +650,14 @@
+ struct record *rec = to;
+
+ if (record__comp_enabled(rec)) {
+- struct perf_record_compressed2 *event = map->data;
+- size_t padding = 0;
+- u8 pad[8] = {0};
+ ssize_t compressed = zstd_compress(rec->session, map, map->data,
+ mmap__mmap_len(map), bf, size);
+
+ if (compressed < 0)
+ return (int)compressed;
+
++ size = compressed;
++ bf = map->data;
+- bf = event;
+- thread->samples++;
+-
+- /*
+- * The record from `zstd_compress` is not 8 bytes aligned, which would cause asan
+- * error. We make it aligned here.
+- */
+- event->data_size = compressed - sizeof(struct perf_record_compressed2);
+- event->header.size = PERF_ALIGN(compressed, sizeof(u64));
+- padding = event->header.size - compressed;
+- return record__write(rec, map, bf, compressed) ||
+- record__write(rec, map, &pad, padding);
+ }
+
+ thread->samples++;
+@@ -1549,7 +1536,7 @@
+
+ static size_t process_comp_header(void *record, size_t increment)
+ {
++ struct perf_record_compressed *event = record;
+- struct perf_record_compressed2 *event = record;
+ size_t size = sizeof(*event);
+
+ if (increment) {
+@@ -1557,7 +1544,7 @@
+ return increment;
+ }
+
++ event->header.type = PERF_RECORD_COMPRESSED;
+- event->header.type = PERF_RECORD_COMPRESSED2;
+ event->header.size = size;
+
+ return size;
+@@ -1567,7 +1554,7 @@
+ void *dst, size_t dst_size, void *src, size_t src_size)
+ {
+ ssize_t compressed;
++ size_t max_record_size = PERF_SAMPLE_MAX_SIZE - sizeof(struct perf_record_compressed) - 1;
+- size_t max_record_size = PERF_SAMPLE_MAX_SIZE - sizeof(struct perf_record_compressed2) - 1;
+ struct zstd_data *zstd_data = &session->zstd_data;
+
+ if (map && map->file)