Messages in this thread Patch in this message | | | Date | Wed, 3 Apr 2019 23:31:44 +0300 | From | Cyrill Gorcunov <> | Subject | Re: perf: perf_fuzzer crashes on Pentium 4 systems |
| |
On Wed, Apr 03, 2019 at 10:19:44PM +0300, Cyrill Gorcunov wrote: > > You know, seems I got what happened -- p4_general_events do > not cover all general events, they stop at PERF_COUNT_HW_BUS_CYCLES, > while more 3 general event left. This is 'cause I've not been following > pmu evolution in code. I will try to cover this events hopefully more > less soon and send you a patch to test (if you don't mind).
Still this should not cause nil deref, continue investigating. Vince could oyu please apply the patch below, I doubt if it help with nil issue but worth having anyway --- From: Cyrill Gorcunov <gorcunov@gmail.com> Subject: [PATCH] perf/x86/intel/p4: Limit p4_general_events down to real ones
p4_general_events are allocated up to PERF_COUNT_HW_MAX while this constant is bigger than the number of general events we do support by now. Thus the all other entries are equal to zero and maps to P4_EVENT_TC_DELIVER_MODE which is wrong of course. Instead drop off PERF_COUNT_HW_MAX constant from declaration, we use ARRAY_SIZE for max_events.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> --- arch/x86/events/intel/p4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-tip.git/arch/x86/events/intel/p4.c =================================================================== --- linux-tip.git.orig/arch/x86/events/intel/p4.c +++ linux-tip.git/arch/x86/events/intel/p4.c @@ -648,7 +648,7 @@ static u64 p4_get_alias_event(u64 config return config_match | (config & P4_CONFIG_EVENT_ALIAS_IMMUTABLE_BITS); } -static u64 p4_general_events[PERF_COUNT_HW_MAX] = { +static u64 p4_general_events[] = { /* non-halted CPU clocks */ [PERF_COUNT_HW_CPU_CYCLES] = p4_config_pack_escr(P4_ESCR_EVENT(P4_EVENT_GLOBAL_POWER_EVENTS) |
| |