From: kernel test robot <lkp@intel.com>
To: Taeyang Lee <0wn@theori.io>
Cc: oe-kbuild-all@lists.linux.dev, Peter Zijlstra <peterz@infradead.org>
Subject: [peterz-queue:perf/urgent 1/4] kernel/events/core.c:13882:24: warning: 'alias' attribute ignored
Date: Thu, 02 Jul 2026 20:02:51 +0800 [thread overview]
Message-ID: <202607021921.ggFEwesi-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/urgent
head: 91a15888098678641edd3ef4f5d66fa7e77dcc28
commit: f60c8830996ca8e468f96cc3ae79aab1e6fbfb12 [1/4] perf/core: Detach event groups during remove_on_exec
config: csky-allmodconfig (https://download.01.org/0day-ci/archive/20260702/202607021921.ggFEwesi-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260702/202607021921.ggFEwesi-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607021921.ggFEwesi-lkp@intel.com/
All warnings (new ones prefixed by >>):
include/linux/syscalls.h:120:35: note: in expansion of macro '__MAP2'
120 | #define __MAP3(m,t,a,...) m(t,a), __MAP2(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:121:35: note: in expansion of macro '__MAP3'
121 | #define __MAP4(m,t,a,...) m(t,a), __MAP3(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:122:35: note: in expansion of macro '__MAP4'
122 | #define __MAP5(m,t,a,...) m(t,a), __MAP4(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:124:22: note: in expansion of macro '__MAP5'
124 | #define __MAP(n,...) __MAP##n(__VA_ARGS__)
| ^~~~~
include/linux/syscalls.h:183:17: note: in expansion of macro '__MAP'
183 | __MAP(nb,__SC_STR_ADECL,__VA_ARGS__) \
| ^~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13883:8: note: (near initialization for 'args__perf_event_open')
include/linux/syscalls.h:138:34: note: in definition of macro '__SC_STR_ADECL'
138 | #define __SC_STR_ADECL(t, a) #a
| ^
include/linux/syscalls.h:119:35: note: in expansion of macro '__MAP1'
119 | #define __MAP2(m,t,a,...) m(t,a), __MAP1(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:120:35: note: in expansion of macro '__MAP2'
120 | #define __MAP3(m,t,a,...) m(t,a), __MAP2(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:121:35: note: in expansion of macro '__MAP3'
121 | #define __MAP4(m,t,a,...) m(t,a), __MAP3(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:122:35: note: in expansion of macro '__MAP4'
122 | #define __MAP5(m,t,a,...) m(t,a), __MAP4(m,__VA_ARGS__)
| ^~~~~~
include/linux/syscalls.h:124:22: note: in expansion of macro '__MAP5'
124 | #define __MAP(n,...) __MAP##n(__VA_ARGS__)
| ^~~~~
include/linux/syscalls.h:183:17: note: in expansion of macro '__MAP'
183 | __MAP(nb,__SC_STR_ADECL,__VA_ARGS__) \
| ^~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:147:40: error: storage class specified for parameter '__syscall_meta__perf_event_open'
147 | static struct syscall_metadata __syscall_meta_##sname; \
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:149:11: error: storage class specified for parameter 'event_enter__perf_event_open'
149 | event_enter_##sname = { \
| ^~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:148:23: error: parameter 'event_enter__perf_event_open' is initialized
148 | static struct trace_event_call __used \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:148:23: warning: 'used' attribute ignored [-Wattributes]
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:160:11: error: storage class specified for parameter '__event_enter__perf_event_open'
160 | *__event_enter_##sname = &event_enter_##sname;
| ^~~~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:158:23: error: parameter '__event_enter__perf_event_open' is initialized
158 | static struct trace_event_call __used \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:158:23: warning: 'used' attribute ignored [-Wattributes]
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:160:11: error: section attribute not allowed for '__event_enter__perf_event_open'
160 | *__event_enter_##sname = &event_enter_##sname;
| ^~~~~~~~~~~~~~
include/linux/syscalls.h:185:9: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:185:41: error: expected declaration specifiers before ';' token
185 | SYSCALL_TRACE_ENTER_EVENT(sname); \
| ^
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:163:40: error: storage class specified for parameter '__syscall_meta__perf_event_open'
163 | static struct syscall_metadata __syscall_meta_##sname; \
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:186:9: note: in expansion of macro 'SYSCALL_TRACE_EXIT_EVENT'
186 | SYSCALL_TRACE_EXIT_EVENT(sname); \
| ^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:163:40: error: redefinition of parameter '__syscall_meta__perf_event_open'
include/linux/syscalls.h:186:9: note: in expansion of macro 'SYSCALL_TRACE_EXIT_EVENT'
186 | SYSCALL_TRACE_EXIT_EVENT(sname); \
--
198 | static struct syscall_metadata __used \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:198:23: warning: 'used' attribute ignored [-Wattributes]
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:200:11: error: section attribute not allowed for '__p_syscall_meta__perf_event_open'
200 | *__p_syscall_meta_##sname = &__syscall_meta_##sname;
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:235:9: note: in expansion of macro 'SYSCALL_METADATA'
235 | SYSCALL_METADATA(sname, x, __VA_ARGS__) \
| ^~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
In file included from include/linux/compiler_types.h:173:
include/linux/compiler-gcc.h:118:33: error: expected declaration specifiers before '#pragma'
118 | #define __diag(s) _Pragma(__diag_str(GCC diagnostic s))
| ^~~~~~~
include/linux/compiler_types.h:721:25: note: in expansion of macro '__diag'
721 | #define __diag_push() __diag(push)
| ^~~~~~
include/linux/syscalls.h:247:9: note: in expansion of macro '__diag_push'
247 | __diag_push(); \
| ^~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/compiler-gcc.h:118:33: error: expected declaration specifiers before '#pragma'
118 | #define __diag(s) _Pragma(__diag_str(GCC diagnostic s))
| ^~~~~~~
include/linux/compiler-gcc.h:121:33: note: in expansion of macro '__diag'
121 | #define __diag_GCC_8(s) __diag(s)
| ^~~~~~
include/linux/compiler-gcc.h:109:9: note: in expansion of macro '__diag_GCC_8'
109 | __diag_GCC_ ## version(__diag_GCC_ ## severity s)
| ^~~~~~~~~~~
include/linux/compiler_types.h:725:9: note: in expansion of macro '__diag_GCC'
725 | __diag_ ## compiler(version, ignore, option)
| ^~~~~~~
include/linux/syscalls.h:248:9: note: in expansion of macro '__diag_ignore'
248 | __diag_ignore(GCC, 8, "-Wattribute-alias", \
| ^~~~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:251:75: error: expected declaration specifiers before ';' token
251 | "Avoid breaking versions without -Wattribute-alias");\
252 | __diag_ignore(clang, 23, "-Wattribute-alias", \
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:253:77: error: expected declaration specifiers before ';' token
253 | "Type aliasing is used to sanitize syscall arguments");\
254 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
>> kernel/events/core.c:13882:24: warning: 'alias' attribute ignored [-Wattributes]
13882 | struct perf_event_attr __user *, attr_uptr,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:126:25: note: in definition of macro '__SC_DECL'
126 | #define __SC_DECL(t, a) t a
| ^
include/linux/syscalls.h:124:22: note: in expansion of macro '__MAP5'
124 | #define __MAP(n,...) __MAP##n(__VA_ARGS__)
| ^~~~~
include/linux/syscalls.h:254:35: note: in expansion of macro '__MAP'
254 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
| ^~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
In file included from include/linux/error-injection.h:7,
from include/linux/module.h:27,
from include/linux/device/driver.h:21,
from include/linux/device.h:32:
include/asm-generic/error-injection.h:30:9: error: storage class specified for parameter '_eil_addr_sys_perf_event_open'
30 | _eil_addr_##fname = { \
| ^~~~~~~~~~
include/linux/syscalls.h:256:9: note: in expansion of macro 'ALLOW_ERROR_INJECTION'
256 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/asm-generic/error-injection.h:28:15: error: parameter '_eil_addr_sys_perf_event_open' is initialized
28 | static struct error_injection_entry __used \
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:256:9: note: in expansion of macro 'ALLOW_ERROR_INJECTION'
256 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
>> include/asm-generic/error-injection.h:28:15: warning: 'used' attribute ignored [-Wattributes]
include/linux/syscalls.h:256:9: note: in expansion of macro 'ALLOW_ERROR_INJECTION'
256 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/asm-generic/error-injection.h:30:9: error: section attribute not allowed for '_eil_addr_sys_perf_event_open'
30 | _eil_addr_##fname = { \
| ^~~~~~~~~~
include/linux/syscalls.h:256:9: note: in expansion of macro 'ALLOW_ERROR_INJECTION'
256 | ALLOW_ERROR_INJECTION(sys##name, ERRNO); \
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:257:28: error: storage class specified for parameter '__do_sys_perf_event_open'
257 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
| ^~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:257:28: warning: parameter '__do_sys_perf_event_open' declared 'inline'
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13882:24: warning: 'gnu_inline' attribute ignored [-Wattributes]
13882 | struct perf_event_attr __user *, attr_uptr,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:126:25: note: in definition of macro '__SC_DECL'
126 | #define __SC_DECL(t, a) t a
| ^
include/linux/syscalls.h:124:22: note: in expansion of macro '__MAP5'
124 | #define __MAP(n,...) __MAP##n(__VA_ARGS__)
| ^~~~~
include/linux/syscalls.h:257:43: note: in expansion of macro '__MAP'
257 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
| ^~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:257:28: error: 'no_instrument_function' attribute applies only to functions
257 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
| ^~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:260:9: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
260 | { \
| ^
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
include/linux/compiler-gcc.h:118:33: error: expected declaration specifiers before '#pragma'
118 | #define __diag(s) _Pragma(__diag_str(GCC diagnostic s))
| ^~~~~~~
include/linux/compiler_types.h:722:25: note: in expansion of macro '__diag'
722 | #define __diag_pop() __diag(pop)
| ^~~~~~
include/linux/syscalls.h:266:9: note: in expansion of macro '__diag_pop'
266 | __diag_pop(); \
| ^~~~~~~~~~
include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:229:36: note: in expansion of macro 'SYSCALL_DEFINEx'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13881:1: note: in expansion of macro 'SYSCALL_DEFINE5'
13881 | SYSCALL_DEFINE5(perf_event_open,
| ^~~~~~~~~~~~~~~
kernel/events/core.c:13884:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
13884 | {
| ^
kernel/events/core.c:14296:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
14296 | {
| ^
kernel/events/core.c:14390:19: error: storage class specified for parameter 'perf_event_create_kernel_counter'
14390 | EXPORT_SYMBOL_GPL(perf_event_create_kernel_counter);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/export.h:76:28: note: in definition of macro '__EXPORT_SYMBOL'
76 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:90:41: note: in expansion of macro '_EXPORT_SYMBOL'
90 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/events/core.c:14390:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
14390 | EXPORT_SYMBOL_GPL(perf_event_create_kernel_counter);
| ^~~~~~~~~~~~~~~~~
include/linux/compiler.h:165:17: error: storage class specified for parameter '__UNIQUE_ID_addressable_perf_event_create_kernel_counter_1116'
165 | __PASTE(__UNIQUE_ID_, \
| ^~~~~~~~~~~~
include/linux/compiler_types.h:15:24: note: in definition of macro '___PASTE'
15 | #define ___PASTE(a, b) a##b
| ^
include/linux/compiler.h:165:9: note: in expansion of macro '__PASTE'
165 | __PASTE(__UNIQUE_ID_, \
| ^~~~~~~
include/linux/compiler.h:273:9: note: in expansion of macro '__UNIQUE_ID'
vim +/alias +13882 kernel/events/core.c
b068fc04de10ff kernel/events/core.c Marco Elver 2021-07-05 13871
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 13872 /**
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13873 * sys_perf_event_open - open a performance event, associate it to a task/cpu
9f66a3810fe0d4 kernel/perf_counter.c Ingo Molnar 2008-12-10 13874 *
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13875 * @attr_uptr: event_id type attributes for monitoring/sampling
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 13876 * @pid: target pid
9f66a3810fe0d4 kernel/perf_counter.c Ingo Molnar 2008-12-10 13877 * @cpu: target cpu
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13878 * @group_fd: group leader event fd
a1ddf5249f2c50 kernel/events/core.c Haocheng Xie 2021-05-27 13879 * @flags: perf event open flags
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 13880 */
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 @13881 SYSCALL_DEFINE5(perf_event_open,
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 @13882 struct perf_event_attr __user *, attr_uptr,
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 13883 pid_t, pid, int, cpu, int, group_fd, unsigned long, flags)
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 13884 {
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 13885 struct perf_event *group_leader = NULL, *output_event = NULL;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 13886 struct perf_event_pmu_context *pmu_ctx;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 13887 struct perf_event *event, *sibling;
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13888 struct perf_event_attr attr;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 13889 struct perf_event_context *ctx;
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13890 struct file *event_file = NULL;
38a81da2205f94 kernel/perf_event.c Matt Helsley 2010-09-13 13891 struct task_struct *task = NULL;
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 13892 struct pmu *pmu;
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 13893 int event_fd;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 13894 int move_group = 0;
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 13895 int err;
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 13896 int f_flags = O_RDWR;
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 13897 int cgroup_fd = -1;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 13898
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 13899 /* for future expandability... */
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13900 if (flags & ~PERF_FLAG_ALL)
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 13901 return -EINVAL;
2743a5b0fa6f30 kernel/perf_counter.c Paul Mackerras 2009-03-04 13902
0a041ebca49562 kernel/events/core.c Namhyung Kim 2022-12-20 13903 err = perf_copy_attr(attr_uptr, &attr);
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13904) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13905) return err;
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13906)
0a041ebca49562 kernel/events/core.c Namhyung Kim 2022-12-20 13907 /* Do we allow access to perf_event_open(2) ? */
9ec84f79c5a7a6 kernel/events/core.c Luo Gengkun 2024-12-23 13908 err = security_perf_event_open(PERF_SECURITY_OPEN);
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 13909 if (err)
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 13910 return err;
eab656ae04b9d3 kernel/perf_counter.c Thomas Gleixner 2008-12-08 13911
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13912 if (!attr.exclude_kernel) {
9ec84f79c5a7a6 kernel/events/core.c Luo Gengkun 2024-12-23 13913 err = perf_allow_kernel();
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13914) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13915) return err;
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13916 }
0764771dab80d7 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13917
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 13918 if (attr.namespaces) {
18aa18566218d4 kernel/events/core.c Alexey Budankov 2020-04-02 13919 if (!perfmon_capable())
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 13920 return -EACCES;
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 13921 }
e422267322cd31 kernel/events/core.c Hari Bathini 2017-03-08 13922
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13923 if (attr.freq) {
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 13924 if (attr.sample_freq > sysctl_perf_event_sample_rate)
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13925 return -EINVAL;
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 13926 } else {
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 13927 if (attr.sample_period & (1ULL << 63))
0819b2e30ccb93 kernel/events/core.c Peter Zijlstra 2014-05-15 13928 return -EINVAL;
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13929 }
df58ab24bf26b1 kernel/perf_counter.c Peter Zijlstra 2009-06-11 13930
fc7ce9c74c3ad2 kernel/events/core.c Kan Liang 2017-08-28 13931 /* Only privileged users can get physical addresses */
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13932) if ((attr.sample_type & PERF_SAMPLE_PHYS_ADDR)) {
9ec84f79c5a7a6 kernel/events/core.c Luo Gengkun 2024-12-23 13933 err = perf_allow_kernel();
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13934) if (err)
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13935) return err;
da97e18458fb42 kernel/events/core.c Joel Fernandes (Google 2019-10-14 13936) }
fc7ce9c74c3ad2 kernel/events/core.c Kan Liang 2017-08-28 13937
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 13938 /* REGS_INTR can leak data, lockdown must prevent this */
08ef1af4de5fe7 kernel/events/core.c Ondrej Mosnacek 2021-02-24 13939 if (attr.sample_type & PERF_SAMPLE_REGS_INTR) {
08ef1af4de5fe7 kernel/events/core.c Ondrej Mosnacek 2021-02-24 13940 err = security_locked_down(LOCKDOWN_PERF);
08ef1af4de5fe7 kernel/events/core.c Ondrej Mosnacek 2021-02-24 13941 if (err)
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 13942 return err;
08ef1af4de5fe7 kernel/events/core.c Ondrej Mosnacek 2021-02-24 13943 }
b0c8fdc7fdb775 kernel/events/core.c David Howells 2019-08-19 13944
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13945 /*
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13946 * In cgroup mode, the pid argument is used to pass the fd
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13947 * opened to the cgroup directory in cgroupfs. The cpu argument
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13948 * designates the cpu on which to monitor threads from that
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13949 * cgroup.
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13950 */
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13951 if ((flags & PERF_FLAG_PID_CGROUP) && (pid == -1 || cpu == -1))
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13952 return -EINVAL;
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13953
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 13954 if (flags & PERF_FLAG_FD_CLOEXEC)
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 13955 f_flags |= O_CLOEXEC;
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 13956
a21b0b354d4ac3 kernel/events/core.c Yann Droneaud 2014-01-05 13957 event_fd = get_unused_fd_flags(f_flags);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 13958 if (event_fd < 0)
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 13959 return event_fd;
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 13960
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13961 /*
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13962 * Event creation should be under SRCU, see perf_pmu_unregister().
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13963 */
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13964 guard(srcu)(&pmus_srcu);
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13965
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 13966 CLASS(fd, group)(group_fd); // group_fd == -1 => empty
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13967 if (group_fd != -1) {
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 13968 if (!is_perf_file(group)) {
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 13969 err = -EBADF;
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 13970 goto err_fd;
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 13971 }
1da91ea87aefe2 kernel/events/core.c Al Viro 2024-05-31 13972 group_leader = fd_file(group)->private_data;
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13973 if (group_leader->state <= PERF_EVENT_STATE_REVOKED) {
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13974 err = -ENODEV;
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13975 goto err_fd;
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 13976 }
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13977 if (flags & PERF_FLAG_FD_OUTPUT)
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13978 output_event = group_leader;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13979 if (flags & PERF_FLAG_FD_NO_GROUP)
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13980 group_leader = NULL;
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13981 }
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 13982
e5d1367f17ba6a kernel/perf_event.c Stephane Eranian 2011-02-14 13983 if (pid != -1 && !(flags & PERF_FLAG_PID_CGROUP)) {
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13984 task = find_lively_task_by_vpid(pid);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13985 if (IS_ERR(task)) {
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13986 err = PTR_ERR(task);
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 13987 goto err_fd;
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13988 }
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13989 }
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 13990
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13991 if (task && group_leader &&
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13992 group_leader->attr.inherit != attr.inherit) {
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13993 err = -EINVAL;
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13994 goto err_task;
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13995 }
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 13996
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 13997 if (flags & PERF_FLAG_PID_CGROUP)
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 13998 cgroup_fd = pid;
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 13999
4dc0da86967d54 kernel/events/core.c Avi Kivity 2011-06-29 14000 event = perf_event_alloc(&attr, cpu, task, group_leader, NULL,
79dff51e900fd2 kernel/events/core.c Matt Fleming 2015-01-23 14001 NULL, NULL, cgroup_fd);
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 14002 if (IS_ERR(event)) {
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 14003 err = PTR_ERR(event);
78af4dc949daaa kernel/events/core.c peterz@infradead.org 2020-08-28 14004 goto err_task;
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 14005 }
d14b12d7adbf21 kernel/perf_event.c Stephane Eranian 2010-09-17 14006
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14007 if (is_sampling_event(event)) {
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14008 if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) {
a1396555abff9f kernel/events/core.c Vineet Gupta 2016-05-09 14009 err = -EOPNOTSUPP;
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14010 goto err_alloc;
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14011 }
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14012 }
53b25335dd6098 kernel/events/core.c Vince Weaver 2014-05-16 14013
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14014 /*
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14015 * Special case software events and allow them to be part of
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14016 * any hardware group.
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14017 */
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14018 pmu = event->pmu;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14019
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14020 if (attr.use_clockid) {
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14021 err = perf_event_set_clock(event, attr.clockid);
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14022 if (err)
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14023 goto err_alloc;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14024 }
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14025
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 14026 if (pmu->task_ctx_nr == perf_sw_context)
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 14027 event->event_caps |= PERF_EV_CAP_SOFTWARE;
4ff6a8debf48a7 kernel/events/core.c David Carrillo-Cisneros 2016-08-17 14028
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14029 if (task) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14030 err = down_read_interruptible(&task->signal->exec_update_lock);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14031 if (err)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14032 goto err_alloc;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14033
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14034 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14035 * We must hold exec_update_lock across this and any potential
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14036 * perf_install_in_context() call for this new event to
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14037 * serialize against exec() altering our credentials (and the
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14038 * perf_event_exit_task() that could imply).
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14039 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14040 err = -EACCES;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14041 if (!perf_check_permission(&attr, task))
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14042 goto err_cred;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14043 }
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14044
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14045 /*
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14046 * Get the target context (task or percpu):
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14047 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14048 ctx = find_get_context(task, event);
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14049 if (IS_ERR(ctx)) {
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14050 err = PTR_ERR(ctx);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14051 goto err_cred;
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14052 }
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14053
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14054 mutex_lock(&ctx->mutex);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14055
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14056 if (ctx->task == TASK_TOMBSTONE) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14057 err = -ESRCH;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14058 goto err_locked;
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14059 }
89a1e18731959e kernel/perf_event.c Peter Zijlstra 2010-09-07 14060
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14061 if (!task) {
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 14062 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14063 * Check if the @cpu we're creating an event for is online.
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14064 *
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14065 * We use the perf_cpu_context::ctx::mutex to serialize against
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14066 * the hotplug notifiers. See perf_event_{init,exit}_cpu().
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14067 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14068 struct perf_cpu_context *cpuctx = per_cpu_ptr(&perf_cpu_context, event->cpu);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14069
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14070 if (!cpuctx->online) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14071 err = -ENODEV;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14072 goto err_locked;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14073 }
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14074 }
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14075
ac9721f3f54b27 kernel/perf_event.c Peter Zijlstra 2010-05-27 14076 if (group_leader) {
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 14077 err = -EINVAL;
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14078
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14079 /*
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 14080 * Do not allow a recursive hierarchy (this new sibling
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 14081 * becoming part of another group-sibling):
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14082 */
ccff286d85098b kernel/perf_counter.c Ingo Molnar 2008-12-11 14083 if (group_leader->group_leader != group_leader)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14084 goto err_locked;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14085
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14086 /* All events in a group should have the same clock */
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14087 if (group_leader->clock != event->clock)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14088 goto err_locked;
34f439278cef7b kernel/events/core.c Peter Zijlstra 2015-02-20 14089
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14090 /*
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 14091 * Make sure we're both events for the same CPU;
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 14092 * grouping events for different CPUs is broken; since
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 14093 * you can never concurrently schedule them anyhow.
04289bb9891882 kernel/perf_counter.c Ingo Molnar 2008-12-11 14094 */
64aee2a965cf29 kernel/events/core.c Mark Rutland 2017-06-22 14095 if (group_leader->cpu != event->cpu)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14096 goto err_locked;
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 14097
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 14098 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14099 * Make sure we're both on the same context; either task or cpu.
c3c87e770458aa kernel/events/core.c Peter Zijlstra 2015-01-23 14100 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14101 if (group_leader->ctx != ctx)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14102 goto err_locked;
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14103
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 14104 /*
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 14105 * Only a group leader can be exclusive or pinned
3b6f9e5cb21964 kernel/perf_counter.c Paul Mackerras 2009-01-14 14106 */
0d48696f87e361 kernel/perf_counter.c Peter Zijlstra 2009-06-02 14107 if (attr.exclusive || attr.pinned)
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 14108 goto err_locked;
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14109
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14110 if (is_software_event(event) &&
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14111 !in_software_context(group_leader)) {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14112 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14113 * If the event is a sw event, but the group_leader
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14114 * is on hw context.
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14115 *
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14116 * Allow the addition of software events to hw
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14117 * groups, this is safe because software events
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14118 * never fail to schedule.
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14119 *
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14120 * Note the comment that goes with struct
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14121 * perf_event_pmu_context.
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14122 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14123 pmu = group_leader->pmu_ctx->pmu;
bf480f93856673 kernel/events/core.c Ravi Bangoria 2022-11-22 14124 } else if (!is_software_event(event)) {
bf480f93856673 kernel/events/core.c Ravi Bangoria 2022-11-22 14125 if (is_software_event(group_leader) &&
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14126 (group_leader->group_caps & PERF_EV_CAP_SOFTWARE)) {
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14127 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14128 * In case the group is a pure software group, and we
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14129 * try to add a hardware event, move the whole group to
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14130 * the hardware context.
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14131 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14132 move_group = 1;
321027c1fe77f8 kernel/events/core.c Peter Zijlstra 2017-01-11 14133 }
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 14134
bf480f93856673 kernel/events/core.c Ravi Bangoria 2022-11-22 14135 /* Don't allow group of multiple hw events from different pmus */
bf480f93856673 kernel/events/core.c Ravi Bangoria 2022-11-22 14136 if (!in_software_context(group_leader) &&
bf480f93856673 kernel/events/core.c Ravi Bangoria 2022-11-22 14137 group_leader->pmu_ctx->pmu != pmu)
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 14138 goto err_locked;
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 14139 }
8a58ddae23796c kernel/events/core.c Alexander Shishkin 2019-07-01 14140 }
3ac6487e584a1e kernel/events/core.c Peter Zijlstra 2022-05-20 14141
3ac6487e584a1e kernel/events/core.c Peter Zijlstra 2022-05-20 14142 /*
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14143 * Now that we're certain of the pmu; find the pmu_ctx.
3ac6487e584a1e kernel/events/core.c Peter Zijlstra 2022-05-20 14144 */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14145 pmu_ctx = find_get_pmu_context(pmu, ctx, event);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14146 if (IS_ERR(pmu_ctx)) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14147 err = PTR_ERR(pmu_ctx);
3ac6487e584a1e kernel/events/core.c Peter Zijlstra 2022-05-20 14148 goto err_locked;
3ac6487e584a1e kernel/events/core.c Peter Zijlstra 2022-05-20 14149 }
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14150 event->pmu_ctx = pmu_ctx;
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 14151
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14152 if (output_event) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14153 err = perf_event_set_output(event, output_event);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14154 if (err)
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14155 goto err_context;
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 14156 }
84c4e620d35f49 kernel/events/core.c Peter Zijlstra 2016-02-24 14157
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 14158 if (!perf_event_validate_size(event)) {
a723968c0ed36d kernel/events/core.c Peter Zijlstra 2015-09-09 14159 err = -E2BIG;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14160 goto err_context;
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 14161 }
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 14162
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 14163 if (perf_need_aux_event(event) && !perf_get_aux_event(event, group_leader)) {
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 14164 err = -EINVAL;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14165 goto err_context;
da9ec3d3dd0f12 kernel/events/core.c Mark Rutland 2020-01-06 14166 }
a63fbed776c712 kernel/events/core.c Thomas Gleixner 2017-05-24 14167
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14168 /*
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14169 * Must be under the same ctx::mutex as perf_install_in_context(),
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14170 * because we need to serialize with concurrent event creation.
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14171 */
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14172 if (!exclusive_event_installable(event, ctx)) {
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14173 err = -EBUSY;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14174 goto err_context;
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14175 }
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 14176
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14177 WARN_ON_ONCE(ctx->parent_ctx);
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14178
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14179 event_file = anon_inode_getfile("[perf_event]", &perf_fops, event, f_flags);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14180 if (IS_ERR(event_file)) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14181 err = PTR_ERR(event_file);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14182 event_file = NULL;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14183 goto err_context;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14184 }
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14185
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14186 /*
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14187 * This is the point on no return; we cannot fail hereafter. This is
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14188 * where we start modifying current state.
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14189 */
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14190
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14191 if (move_group) {
45a0e07abf4933 kernel/events/core.c Peter Zijlstra 2016-01-26 14192 perf_remove_from_context(group_leader, 0);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14193 put_pmu_ctx(group_leader->pmu_ctx);
0231bb53367584 kernel/events/core.c Jiri Olsa 2013-02-01 14194
edb39592a5877b kernel/events/core.c Peter Zijlstra 2018-03-15 14195 for_each_sibling_event(sibling, group_leader) {
45a0e07abf4933 kernel/events/core.c Peter Zijlstra 2016-01-26 14196 perf_remove_from_context(sibling, 0);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14197 put_pmu_ctx(sibling->pmu_ctx);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14198 }
9b51f66dcb09ac kernel/perf_counter.c Ingo Molnar 2008-12-12 14199
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14200) /*
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14201) * Install the group siblings before the group leader.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14202) *
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14203) * Because a group leader will try and install the entire group
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14204) * (through the sibling list, which is still in-tact), we can
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14205) * end up with siblings installed in the wrong context.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14206) *
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14207) * By installing siblings first we NO-OP because they're not
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14208) * reachable through the group lists.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14209) */
edb39592a5877b kernel/events/core.c Peter Zijlstra 2018-03-15 14210 for_each_sibling_event(sibling, group_leader) {
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14211 sibling->pmu_ctx = pmu_ctx;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14212 get_pmu_ctx(pmu_ctx);
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14213) perf_event__state_init(sibling);
9fc81d87420d0d kernel/events/core.c Jiri Olsa 2014-12-10 14214 perf_install_in_context(ctx, sibling, sibling->cpu);
b04243ef7006cd kernel/perf_event.c Peter Zijlstra 2010-09-17 14215 }
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14216)
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14217) /*
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14218) * Removing from the context ends up with disabled
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14219) * event. What we want here is event in the initial
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14220) * startup state, ready to be add into new context.
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14221) */
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14222 group_leader->pmu_ctx = pmu_ctx;
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14223 get_pmu_ctx(pmu_ctx);
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14224) perf_event__state_init(group_leader);
8f95b435b62522 kernel/events/core.c Peter Zijlstra (Intel 2015-01-27 14225) perf_install_in_context(ctx, group_leader, group_leader->cpu);
bed5b25ad9c8a2 kernel/events/core.c Alexander Shishkin 2015-01-30 14226 }
bed5b25ad9c8a2 kernel/events/core.c Alexander Shishkin 2015-01-30 14227
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14228 /*
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14229 * Precalculate sample_data sizes; do while holding ctx::mutex such
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14230 * that we're serialized against further additions and before
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14231 * perf_install_in_context() which is the point the event is active and
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14232 * can use these values.
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14233 */
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14234 perf_event__header_size(event);
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14235 perf_event__id_header_size(event);
f73e22ab450140 kernel/events/core.c Peter Zijlstra 2015-09-09 14236
78cd2c748f4597 kernel/events/core.c Peter Zijlstra 2016-01-25 14237 event->owner = current;
78cd2c748f4597 kernel/events/core.c Peter Zijlstra 2016-01-25 14238
e2d37cd213dcc0 kernel/events/core.c Yan, Zheng 2012-06-15 14239 perf_install_in_context(ctx, event, event->cpu);
fe4b04fa31a6dc kernel/perf_event.c Peter Zijlstra 2011-02-02 14240 perf_unpin_context(ctx);
f63a8daa5812af kernel/events/core.c Peter Zijlstra 2015-01-23 14241
d859e29fe34cb8 kernel/perf_counter.c Paul Mackerras 2009-01-17 14242 mutex_unlock(&ctx->mutex);
9b51f66dcb09ac kernel/perf_counter.c Ingo Molnar 2008-12-12 14243
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14244 if (task) {
f7cfd871ae0c50 kernel/events/core.c Eric W. Biederman 2020-12-03 14245 up_read(&task->signal->exec_update_lock);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14246 put_task_struct(task);
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14247 }
79c9ce57eb2d5f kernel/events/core.c Peter Zijlstra 2016-04-26 14248
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 14249 mutex_lock(¤t->perf_event_mutex);
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 14250 list_add_tail(&event->owner_entry, ¤t->perf_event_list);
cdd6c482c9ff9c kernel/perf_event.c Ingo Molnar 2009-09-21 14251 mutex_unlock(¤t->perf_event_mutex);
082ff5a2767a06 kernel/perf_counter.c Peter Zijlstra 2009-05-23 14252
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 14253 /*
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 14254 * File reference in group guarantees that group_leader has been
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 14255 * kept alive until we place the new event on the sibling_list.
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 14256 * This ensures destruction of the group leader will find
4dd53b84ff2342 kernel/events/core.c Al Viro 2024-06-02 14257 * the pointer to itself in perf_group_detach().
8a49542c0554af kernel/perf_event.c Peter Zijlstra 2010-05-27 14258 */
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 14259 fd_install(event_fd, event_file);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 14260 return event_fd;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 14261
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14262 err_context:
a551844e345ba2 kernel/events/core.c Peter Zijlstra 2022-12-19 14263 put_pmu_ctx(event->pmu_ctx);
a551844e345ba2 kernel/events/core.c Peter Zijlstra 2022-12-19 14264 event->pmu_ctx = NULL; /* _free_event() */
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14265 err_locked:
f55fc2a57cc9ca kernel/events/core.c Peter Zijlstra 2015-09-09 14266 mutex_unlock(&ctx->mutex);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14267 perf_unpin_context(ctx);
bd27568117664b kernel/events/core.c Peter Zijlstra 2022-10-08 14268 put_ctx(ctx);
78af4dc949daaa kernel/events/core.c peterz@infradead.org 2020-08-28 14269 err_cred:
78af4dc949daaa kernel/events/core.c peterz@infradead.org 2020-08-28 14270 if (task)
d01e7f10dae29e kernel/events/core.c Linus Torvalds 2020-12-15 14271 up_read(&task->signal->exec_update_lock);
c6be5a5cb62592 kernel/perf_event.c Peter Zijlstra 2010-10-14 14272 err_alloc:
da916e96e2dedc kernel/events/core.c Peter Zijlstra 2024-10-25 14273 put_event(event);
1f4ee5038f0c1e kernel/events/core.c Peter Zijlstra 2014-05-06 14274 err_task:
e7d0bc047548d7 kernel/perf_event.c Peter Zijlstra 2010-10-14 14275 if (task)
e7d0bc047548d7 kernel/perf_event.c Peter Zijlstra 2010-10-14 14276 put_task_struct(task);
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 14277 err_fd:
ea635c64e00706 kernel/perf_event.c Al Viro 2010-05-26 14278 put_unused_fd(event_fd);
dc86cabe4b2424 kernel/perf_counter.c Ingo Molnar 2009-09-03 14279 return err;
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 14280 }
0793a61d4df8da kernel/perf_counter.c Thomas Gleixner 2008-12-04 14281
:::::: The code at line 13882 was first introduced by commit
:::::: cdd6c482c9ff9c55475ee7392ec8f672eddb7be6 perf: Do the big rename: Performance Counters -> Performance Events
:::::: TO: Ingo Molnar <mingo@elte.hu>
:::::: CC: Ingo Molnar <mingo@elte.hu>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-07-02 12:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202607021921.ggFEwesi-lkp@intel.com \
--to=lkp@intel.com \
--cc=0wn@theori.io \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.