diff --git a/kernel/events/core.c b/kernel/events/core.c index dd3bd9cf1986..0f29d17a600d 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -13932,7 +13932,9 @@ SYSCALL_DEFINE5(perf_event_open, if (err) return err; - if (!attr.exclude_kernel) { + if (!attr.exclude_kernel || + ((attr.sample_type & PERF_SAMPLE_CALLCHAIN) && + !attr.exclude_callchain_kernel)) { err = perf_allow_kernel(); if (err) return err;