1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)
|