On 10/14/15 5:37 AM, Kaixu Xia wrote:
+ event->p_sample_disable = &enabler_event->sample_disable;
I don't like it as a concept and it's buggy implementation. What happens here when enabler is alive, but other event is destroyed?
--- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -221,9 +221,12 @@ static u64 bpf_perf_event_sample_control(u64 r1, u64 index, u64 flag, u64 r4, u6 struct bpf_array *array = container_of(map, struct bpf_array, map); struct perf_event *event; - if (unlikely(index >= array->map.max_entries)) + if (unlikely(index > array->map.max_entries)) return -E2BIG; + if (index == array->map.max_entries) + index = 0;
what is this hack for ? Either use notification and user space disable or call bpf_perf_event_sample_control() manually for each cpu. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html