Commit dfe5a504 authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Peter Zijlstra

perf: avoid structure size confusion by using a fixed size

for some reason, this structure gets compiled as 36 bytes in some files
(the ones that alloacte it) but 40 bytes in others (the ones that use it).
The cause is an off_t type that gets a different size in different
compilation units for some yet-to-be-explained reason.

But the effect is disasterous; the size/offset members of the struct
are at different offsets, and result in mostly complete garbage.
The parser in perf is so robust that this all gets hidden, and after
skipping an certain amount of samples, it recovers.... so this bug
is not normally noticed.

.... except when you want every sample to be exact.

Fix this by just using an explicitly sized type.
Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4A655917.9080504@linux.intel.com>
parent 966ee4d6
...@@ -16,7 +16,7 @@ struct perf_header { ...@@ -16,7 +16,7 @@ struct perf_header {
int frozen; int frozen;
int attrs, size; int attrs, size;
struct perf_header_attr **attr; struct perf_header_attr **attr;
off_t attr_offset; s64 attr_offset;
u64 data_offset; u64 data_offset;
u64 data_size; u64 data_size;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment