======================================================
WARNING: possible circular locking dependency detected
4.14.302-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor113/7954 is trying to acquire lock:
(cpu_hotplug_lock.rw_sem){++++}, at: [<ffffffff8167d71e>] static_key_slow_inc+0xe/0x20 kernel/jump_label.c:123
but task is already holding lock:
(tracepoints_mutex){+.+.}, at: [<ffffffff81568d58>] tracepoint_probe_register_prio kernel/tracepoint.c:327 [inline]
(tracepoints_mutex){+.+.}, at: [<ffffffff81568d58>] tracepoint_probe_register+0x68/0xc0 kernel/tracepoint.c:352
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #5 (tracepoints_mutex){+.+.}:
__mutex_lock_common kernel/locking/mutex.c:756 [inline]
__mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
tracepoint_probe_register_prio kernel/tracepoint.c:327 [inline]
tracepoint_probe_register+0x68/0xc0 kernel/tracepoint.c:352
trace_event_reg+0x272/0x330 kernel/trace/trace_events.c:305
perf_trace_event_reg kernel/trace/trace_event_perf.c:122 [inline]
perf_trace_event_init kernel/trace/trace_event_perf.c:197 [inline]
perf_trace_init+0x424/0xa30 kernel/trace/trace_event_perf.c:221
perf_tp_event_init+0x79/0xf0 kernel/events/core.c:8145
perf_try_init_event+0xdf/0x1f0 kernel/events/core.c:9379
perf_init_event kernel/events/core.c:9417 [inline]
perf_event_alloc.part.0+0xe2d/0x2640 kernel/events/core.c:9677
perf_event_alloc kernel/events/core.c:10047 [inline]
SYSC_perf_event_open kernel/events/core.c:10151 [inline]
SyS_perf_event_open+0x683/0x2530 kernel/events/core.c:10037
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
-> #4 (event_mutex){+.+.}:
__mutex_lock_common kernel/locking/mutex.c:756 [inline]
__mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
perf_trace_init+0x4f/0xa30 kernel/trace/trace_event_perf.c:216
perf_tp_event_init+0x79/0xf0 kernel/events/core.c:8145
perf_try_init_event+0xdf/0x1f0 kernel/events/core.c:9379
perf_init_event kernel/events/core.c:9417 [inline]
perf_event_alloc.part.0+0xe2d/0x2640 kernel/events/core.c:9677
perf_event_alloc kernel/events/core.c:10047 [inline]
SYSC_perf_event_open kernel/events/core.c:10151 [inline]
SyS_perf_event_open+0x683/0x2530 kernel/events/core.c:10037
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
-> #3 (&cpuctx_mutex/1){+.+.}:
__mutex_lock_common kernel/locking/mutex.c:756 [inline]
__mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
mutex_lock_double kernel/events/core.c:9873 [inline]
__perf_event_ctx_lock_double kernel/events/core.c:10017 [inline]
SYSC_perf_event_open kernel/events/core.c:10282 [inline]
SyS_perf_event_open+0xd13/0x2530 kernel/events/core.c:10037
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
-> #2 (&cpuctx_mutex){+.+.}:
__mutex_lock_common kernel/locking/mutex.c:756 [inline]
__mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
perf_event_init_cpu+0xb7/0x170 kernel/events/core.c:11291
perf_event_init+0x2cc/0x308 kernel/events/core.c:11338
start_kernel+0x45d/0x763 init/main.c:624
secondary_startup_64+0xa5/0xb0 arch/x86/kernel/head_64.S:240
-> #1 (pmus_lock){+.+.}:
__mutex_lock_common kernel/locking/mutex.c:756 [inline]
__mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
perf_event_init_cpu+0x2c/0x170 kernel/events/core.c:11285
cpuhp_invoke_callback+0x1e6/0x1a80 kernel/cpu.c:186
cpuhp_up_callbacks kernel/cpu.c:574 [inline]
_cpu_up+0x21e/0x520 kernel/cpu.c:1193
do_cpu_up+0x9a/0x160 kernel/cpu.c:1229
smp_init+0x197/0x1ac kernel/smp.c:578
kernel_init_freeable+0x406/0x626 init/main.c:1074
kernel_init+0xd/0x15d init/main.c:1006
ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:406
-> #0 (cpu_hotplug_lock.rw_sem){++++}:
lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
percpu_down_read_preempt_disable include/linux/percpu-rwsem.h:36 [inline]
percpu_down_read include/linux/percpu-rwsem.h:59 [inline]
cpus_read_lock+0x39/0xc0 kernel/cpu.c:297
static_key_slow_inc+0xe/0x20 kernel/jump_label.c:123
tracepoint_add_func+0x747/0xa40 kernel/tracepoint.c:269
tracepoint_probe_register_prio kernel/tracepoint.c:331 [inline]
tracepoint_probe_register+0x8c/0xc0 kernel/tracepoint.c:352
trace_event_reg+0x272/0x330 kernel/trace/trace_events.c:305
perf_trace_event_reg kernel/trace/trace_event_perf.c:122 [inline]
perf_trace_event_init kernel/trace/trace_event_perf.c:197 [inline]
perf_trace_init+0x424/0xa30 kernel/trace/trace_event_perf.c:221
perf_tp_event_init+0x79/0xf0 kernel/events/core.c:8145
perf_try_init_event+0xdf/0x1f0 kernel/events/core.c:9379
perf_init_event kernel/events/core.c:9417 [inline]
perf_event_alloc.part.0+0xe2d/0x2640 kernel/events/core.c:9677
perf_event_alloc kernel/events/core.c:10047 [inline]
SYSC_perf_event_open kernel/events/core.c:10151 [inline]
SyS_perf_event_open+0x683/0x2530 kernel/events/core.c:10037
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
other info that might help us debug this:
Chain exists of:
cpu_hotplug_lock.rw_sem --> event_mutex --> tracepoints_mutex
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(tracepoints_mutex);
lock(event_mutex);
lock(tracepoints_mutex);
lock(cpu_hotplug_lock.rw_sem);
*** DEADLOCK ***
4 locks held by syz-executor113/7954:
#0: (&pmus_srcu){....}, at: [<ffffffff8163a9d4>] fdput include/linux/file.h:40 [inline]
#0: (&pmus_srcu){....}, at: [<ffffffff8163a9d4>] perf_cgroup_connect kernel/events/core.c:849 [inline]
#0: (&pmus_srcu){....}, at: [<ffffffff8163a9d4>] perf_event_alloc.part.0+0xc44/0x2640 kernel/events/core.c:9672
#1: (&cpuctx_mutex/1){+.+.}, at: [<ffffffff81636ded>] perf_event_ctx_lock_nested+0x14d/0x2c0 kernel/events/core.c:1241
#2: (event_mutex){+.+.}, at: [<ffffffff815b1e4f>] perf_trace_init+0x4f/0xa30 kernel/trace/trace_event_perf.c:216
#3: (tracepoints_mutex){+.+.}, at: [<ffffffff81568d58>] tracepoint_probe_register_prio kernel/tracepoint.c:327 [inline]
#3: (tracepoints_mutex){+.+.}, at: [<ffffffff81568d58>] tracepoint_probe_register+0x68/0xc0 kernel/tracepoint.c:352
stack backtrace:
CPU: 0 PID: 7954 Comm: syz-executor113 Not tainted 4.14.302-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b2/0x281 lib/dump_stack.c:58
print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258
check_prev_add kernel/locking/lockdep.c:1905 [inline]
check_prevs_add kernel/locking/lockdep.c:2022 [inline]
validate_chain kernel/locking/lockdep.c:2464 [inline]
__lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491
lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
percpu_down_read_preempt_disable include/linux/percpu-rwsem.h:36 [inline]
percpu_down_read include/linux/percpu-rwsem.h:59 [inline]
cpus_read_lock+0x39/0xc0 kernel/cpu.c:297
static_key_slow_inc+0xe/0x20 kernel/jump_label.c:123
tracepoint_add_func+0x747/0xa40 kernel/tracepoint.c:269
tracepoint_probe_register_prio kernel/tracepoint.c:331 [inline]
tracepoint_probe_register+0x8c/0xc0 kernel/tracepoint.c:352
trace_event_reg+0x272/0x330 kernel/trace/trace_events.c:305
perf_trace_event_reg kernel/trace/trace_event_perf.c:122 [inline]
perf_trace_event_init kernel/trace/trace_event_perf.c:197 [inline]
perf_trace_init+0x424/0xa30 kernel/trace/trace_event_perf.c:221
perf_tp_event_init+0x79/0xf0 kernel/events/core.c:8145
perf_try_init_event+0xdf/0x1f0 kernel/events/core.c:9379
perf_init_event kernel/events/core.c:9417 [inline]
perf_event_alloc.part.0+0xe2d/0x2640 kernel/events/core.c:9677
perf_event_alloc kernel/events/core.c:10047 [inline]
SYSC_perf_event_open kernel/events/core.c:10151 [inline]
SyS_perf_event_open+0x683/0x2530 kernel/events/core.c:10037
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
RIP: 0033:0x7ff23b6fc489
RSP: 002b:00007ffeace993b8 EFLAGS: 0000